Google 拡張機能でページ アクション ポップアップを作成しています。ポップアップが閉じられたときに、コンテンツをファイルに書き戻す必要があります。このために、window.unload
イベントを添付しました。アンロード ハンドラで、ファイルに書き込もうとしています。しかし、非同期APIを使用しているため、関数にsuccessHandlerを設定した直後にgetFile
ページが閉じられ、successHandlerが実行されません。ここで同期ファイル API を使用できますか? 同期 API は Webworker でのみ使用できると読みました。拡張機能で使用できますか? または、この状況に対処する他の方法があります。ここにファイルへの書き込み用のコードを貼り付けています
fileSystem.root.getFile(fileName, {create : true, exclusive : true}, function (fileEntry) {
file.createWriter(function() {
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder;
var bb = new BlobBuilder();
bb.append(JSON.stringify(credentialsObj));
fileWriter.write(bb.getBlob('text/plain'));
}, errorHandler);
}, errorHandler);
最初に投稿された質問への変更
上記のコードをコンテンツ スクリプトに移動しました。ページアクションが閉じたときにコンテンツスクリプトと通信しようとしています。このために、関数を に添付しましたwindow.onunload
。ページ アクション ポップアップをデバッガ モードで開き、 を実行しlocation.reload(true)
ました。次に、window.unload
リスナーが呼び出され、プログラム コントロールがコンテンツ スクリプトに到達し、コードが実行されます。しかし、実際に拡張機能をデプロイすると、ユーザーがポップアップ内以外の場所をクリックすると、ポップアップが閉じられます。この場合、アンロード ハンドラは呼び出されません。Google は、ポップアップが閉じたときに検出するイベントを提供していません。提供される唯一のイベントは、ページ アクションにポップアップがある場合はトリガーされないクリック イベントです。ポップアップが閉じられたことを検出するにはどうすればよいですか?