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