1
多くの方法を試しましたが、ポップアップの終了前にイベントリスナーがトリガーされていません。 SOに関する関連の質問がありますが、何も私のために働いていません。
は、ここに私が試したものです:私は、ユーザーがポップアップを閉じたときに、いくつかのデータを保存したいポップアップクロムの終了時にデータをchrome.storage.syncに保存
chrome.runtime.onSuspend.addListener(function hello() {
chrome.storage.sync.set({
'somedata': 'mydata1' // didn't work
}, function() {});
});
addEventListener("unload", function(event) {
chrome.storage.sync.set({
'somedata': 'mydata2' // didn't work
}, function() {});
}, true);
。それで全部です。
すべての 'change'と' input'イベントのデータをchrome.storage.syncの一時キーに保存するだけで、ブラウザ/コンピュータが突然クラッシュした場合でもデータを失うことはありません。これは、ユーザーフレンドリーなアプリケーションの仕組みであり、常に最新の状態をすぐに保存します。 – wOxxOm
また、拡張ポップアップアンロードイベントのサポートは、常に[信頼できず、不安定](https://crbug.com/31262)でした。また、あなたの場合、 'sync.set'コールバックは非同期で、呼び出される前に*ポップアップウィンドウで破棄されます。 – wOxxOm
あなたは@wOxxOmが記載されている(つまり、すべての変更時に保存される)か、または "保存"と "キャンセル"ボタンを持っていなければなりません。 UIの観点からは、変更をコミットする明示的な方法と変更をコミットせずにポップアップ/パネルを終了する明確な方法がない限り、ユーザーはすべての変更が永続的な効果を持つと期待します。 – Makyen