我敢肯定的答案是NO ,因此谷歌齒輪,ADOBE AIR等JavaScript可以訪問文件系統嗎?
如果我是正確的,那麼如何做http://tiddlywiki.com工作?它是持久性的,並用JavaScript編寫。它也只是一個沒有外部(serverside)依賴關係的HTML文件。 WTF?它在哪裏/如何存儲它的狀態?
我敢肯定的答案是NO ,因此谷歌齒輪,ADOBE AIR等JavaScript可以訪問文件系統嗎?
如果我是正確的,那麼如何做http://tiddlywiki.com工作?它是持久性的,並用JavaScript編寫。它也只是一個沒有外部(serverside)依賴關係的HTML文件。 WTF?它在哪裏/如何存儲它的狀態?
Tiddlywiki有幾種保存數據的方法,具體取決於使用哪種瀏覽器。 As you could see in the source。
如果答案包含指向github代碼庫中實際代碼的指針,那將會很好。 – GabrielC 2014-07-14 13:58:02
它使用這樣一個java文件引用:
drivers.tiddlySaver = {
name: "tiddlySaver",
deferredInit: function() {
if(!document.applets["TiddlySaver"] && !$.browser.mozilla && !$.browser.msie && document.location.toString().substr(0,5) == "file:") {
$(document.body).append("<applet style='position:absolute;left:-1px' name='TiddlySaver' code='TiddlySaver.class' archive='TiddlySaver.jar' width='1'height='1'></applet>");
}
},
isAvailable: function() {
return !!document.applets["TiddlySaver"];
},
loadFile: function(filePath) {
var r;
try {
if(document.applets["TiddlySaver"]) {
r = document.applets["TiddlySaver"].loadFile(javaUrlToFilename(filePath),"UTF-8");
return (r === undefined || r === null) ? null : String(r);
}
} catch(ex) {
}
return null;
},
saveFile: function(filePath,content) {
try {
if(document.applets["TiddlySaver"])
return document.applets["TiddlySaver"].saveFile(javaUrlToFilename(filePath),"UTF-8",content);
} catch(ex) {
}
return null;
}
}
答案是確實NO。 Java小程序,和可怕的ActiveX插件通常使用,如果這是必需的
從技術上講,你可以在兼容Netscape的瀏覽器(Firefox,Mozilla的,Netscape)的做
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
,它會詢問用戶*是否允許文件系統訪問,但這不是可移植的。
*每個瀏覽器進程一旦
HTML5的文件[1],FileWriter的[2]和文件系統[3] API是谷歌瀏覽器的最新的開發者提供通道。 FileSystem API允許您在瀏覽器知道的空間內讀/寫沙盒文件系統。例如,您不能在用戶的本地FS上打開「我的圖片」文件夾並對其進行讀取/寫入。這是作品中的一些東西,但它暫時還沒有準備好。寫文件的例子:
window.requestFileSystem(
TEMPORARY, // persistent vs. temporary storage
1024 * 1024, // 1MB. Size (bytes) of needed space
initFs, // success callback
opt_errorHandler // opt. error callback, denial of access
);
function initFs(fs) {
fs.root.getFile('logFile.txt', {create: true}, function(fileEntry) {
fileEntry.createWriter(function(writer) { // FileWriter
writer.onwrite = function(e) {
console.log('Write completed.');
};
writer.onerror = function(e) {
console.log('Write failed: ' + e.toString());
};
var bb = new BlobBuilder();
bb.append('Lorem ipsum');
writer.write(bb.getBlob('text/plain'));
}, errorHandler);
}
}
看看這個HTML5 Storage slide deck更多的代碼片斷。
JavaScript可以訪問文件系統嗎?
不是上述沙箱區域之外,據我所知。但是,它可以訪問具有可調用公用方法的可簽名的java applet,該公用方法可以訪問所有文件。我已經做到了,它工作正常,並且是跨瀏覽器。
簽名部分有些涉及和專業用途,您可能需要支付授權您的身份的代碼簽名證書。從Verisign等地方獲取。這樣用戶至少知道applet是由誰寫的(如果有幫助的話)。您可以自己免費簽名,但其中一個「可能的安全風險」彈出窗口將在首次使用時發生,以供用戶授權。
你可能會認爲這種已簽名的文件寫入小程序已經存在下載,但我找不到任何通過搜索。如果他們這樣做了,您可以將其插入到您的頁面中,學習API並關閉您。
http://www.html5rocks.com/en/tutorials/file/filesystem/ – Pacerier 2014-05-01 20:41:20