私は答えがNOであるとかなり確信していました、そしてそれ故にグーグルギア、アドビAIRなど。
私が正しければ、 http://tiddlywiki.comはどのように機能しますか?それは永続的であり、javascriptで書かれています。また、外部(サーバー側)の依存関係がない単一のHTMLファイルでもあります。WTF?状態をどこに/どのように保存しますか?
私は答えがNOであるとかなり確信していました、そしてそれ故にグーグルギア、アドビAIRなど。
私が正しければ、 http://tiddlywiki.comはどのように機能しますか?それは永続的であり、javascriptで書かれています。また、外部(サーバー側)の依存関係がない単一のHTMLファイルでもあります。WTF?状態をどこに/どのように保存しますか?
Tiddlywikiには、使用するブラウザに応じて、データを保存する方法がいくつかあります。あなたがソースで見ることができるように。
HTML5のFile[ 1 ]、FileWriter [ 2 ]、およびFileSystem [ 3 ] APIは、GoogleChromeの最新の開発者チャネルで利用できます。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ストレージスライドデッキをご覧ください。
次のような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;
}
}
技術的にはあなたができる
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
ネットスケープ互換のブラウザ(Firefox、Mozilla、ネットスケープ)で、ファイルシステムへのアクセスを許可するかどうかをユーザー*に尋ねますが、これは移植性がありません。
*ブラウザプロセスごとに1回
javascriptはファイルシステムにアクセスできますか?
私の知る限り、上記のサンドボックスエリアの外ではありません。ただし、すべてのファイルにアクセスできる呼び出し可能なパブリックメソッドを持つ署名付きJavaアプレットにアクセスできます。私はそれをしました、そしてそれはうまく働き、クロスブラウザです。
署名の部分はやや複雑であり、専門的な使用のために、あなたはあなたの身元を承認するコード署名証明書の代金を払う必要があるかもしれません。Verisignのような場所から入手してください。そうすれば、ユーザーは少なくともアプレットが誰によって書かれたかを知ることができます(それが役立つ場合)。自分で無料で署名できますが、これらの「セキュリティリスクの可能性」ポップアップの1つは、ユーザーによる承認のために最初に使用されたときに発生します。
このようなファイル書き込み用の署名付きアプレットはダウンロード用にすでに存在していると思われるかもしれませんが、検索しても見つかりませんでした。もしそうなら、あなたはそれをあなたのページに差し込んで、APIを学び、そしてあなたが行くことができます。
答えは確かにNOです。Javaアプレット、および恐ろしいActiveXプラグインは、これが必要な場合は通常使用されます