0

Timer オブジェクトを に格納していますchrome.storage.sync。Timer オブジェクトを取得し、そのメソッドの 1 つを呼び出そうとするとcountdown()、メソッドが存在しなくなります。

  let clock = new Timer(1);
  let key = "myKey";
  chrome.storage.sync.set({[key]: clock});
  chrome.storage.sync.get(key, function(items){
    items[key].countdown();
  });

Chrome devTools には、「storage.get に対するエラー: TypeError: items[key].countdown は関数ではありません」と表示されます。

4

2 に答える 2

0

この質問にもたどり着き、複数の場所から関数にアクセスするための代替ソリューションを(を使用せずに)見つけられなかった人は、関数が使用される場所とその場所の間のメッセージパッシングをchrome.storage選択できます作成した。

上記の例は、大まかに次のように書き直すことができます。

関数が呼び出される予定だったスクリプトでは、次のようになります。

      chrome.runtime.sendMessage({startCountdown: true}, null);

現在のスクリプトでは:

      let clock = new Timer(1);
      let key = "myKey";
      chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
        if (message.startCountdown === true) {
            clock.countdown();
        };
      });
于 2021-02-12T14:07:52.057 に答える