2016-11-01 8 views
1

初心者はこれがかなり初心者であれば申し訳ありません。私は、ロード時に単にチェックボックス/スイッチを持つ拡張機能を作っています。最初に開いたときにチェックを外すことになっていますが、内線が閉じられて再び開くと、チェックされたかどうかが表示されます。Chrome拡張機能:ポップアップを再開したときにチェックボックスの値を記憶しています

このチェックボックスは、background.jsでタイマーを開始し、チェックを外すとチェックが外されます。

関連するHTMLポップアップのためにHTMLでpopup.js

document.addEventListener('DOMContentLoaded', function() { 
    document.getElementById("notification").addEventListener('click', runTimer); 
    console.log("DOM Loaded"); 
}); 

function runTimer() {... 

<div class="onoffswitch"> 
      <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="notification" /> 
      <label class="onoffswitch-label" for="notification"> 
       <span class="onoffswitch-inner"></span> 
       <span class="onoffswitch-switch"></span> 
      </label> 
     </div> 

関連部分をチェックボックスの状態を保存する以外に、私は、このすべての作業を持って、私のチェックボックスがありますチェックしないように設定します。私は閉じられ、拡張子を再度開く場合、私はそれを使用することができるようにそれは、チェックボックスの値を救う把握popup.jsに

var switchState = document.getElementById("notification").checked; 
    chrome.storage.sync.set({ 
     'value' : switchState 
    }, function() { 
     console.log("Switch Saved as " + switchState); 
    }); 

これを置くことで周りいじるました。私の問題は、私が拡張機能を開くと、HTMLが引き継がれ、チェックボックスがゼロから作成されます。

拡張機能が以前に一度開かれたことがわかっているので、これを上書きする方法はありますか?最後に開いたときのチェックボックスの値を使用する必要がありますか?

+0

ポップアップJavaScriptで、 'DOMContentLoaded'イベントハンドラ内で、チェックボックス状態を保存状態に設定します。 'chrome.storage'を使用している場合は、保存されているデータの現在の状態を読み取る必要があります。周囲には、[Googleのオプションページについて](https://developer.chrome。)などの多くの例があります。com/extensions/optionsV2)、これは単に 'default_popup'としてそれを含めることによってポップアップになることができます。 – Makyen

答えて

1

Google's options exampleからコードをコピーし、コードに合わせて、それを変換:

// Restores checkbox state using the preferences stored in chrome.storage.sync 
function restoreOptions() { 
    // Use default value = false. 
    chrome.storage.sync.get({ 
     value: false 
    }, function (items) { 
     document.getElementById('notification').checked = items.value; 
    }); 
} 

次に、あなたのDOMContentLoadedハンドラは次のようになります。chrome.storage.syncの使用は、チェックボックスの状態を保存すること

document.addEventListener('DOMContentLoaded', function() { 
    restoreOptions(); 
    document.getElementById("notification").addEventListener('click', runTimer); 
    console.log("DOM Loaded"); 
}); 

注意あなたのマシン上の異なるChromeの実行だけでなく、その人と同期するすべてのものを対象としています。 chrome.storage.localを使用して、そのマシンへのチェックボックス状態の格納を制限することができます。また、Chromeの起動時に拡張機能が最初に実行されるときの状態をクリアしたい場合があります。私が見るので、私は間違って再びどこに行った

1

は、私が使用したコードは以下で、私の以前の回答を削除した

プリティ示唆された、まさに多くの、だけでなく、どのようなGoogleのオプションページにあった(私は読みました
function restoreOptions() { 
    chrome.storage.sync.get({ 
     //False is the default value when first opening the extension 
     'initialValue' : false 
    }, function (items) { 
     document.getElementById('notification').checked = items.initialValue; 
    }); 
} 

それは当時はそれを得ていなかった)。私は初めての拡張機能を起動したときにストレージが私の問題を修正した値を持っていない場合、 'initialValue'がfalseに設定されていたビットを見逃しました。

最終的にすべて最終的にはっきりとしています。あなたの助けをもう一度おねがいします。

関連する問題