-1

JavaScriptとChrome拡張プログラムの新機能は比較的新しいので、ブラウザにデータをローカルに保存できるストレージAPIとのやりとりに問題がありました。 chrome.storageのドキュメントを慎重に読んだ後も、ストレージには何もロードできませんでした。これまで私が2つの部分に分かれているコードは、最初は名前とタブを定義するコードです。Google ChromeのストレージAPIとのやり取り

var groupmaker = function() { 
 
    var $tabs = document.querySelector("tabs-"); 
 
    var $input = document.querySelector("input"); 
 
    chrome.tabs.query({windowId: chrome.windows.WINDOW_ID_CURRENT}, function(tabs) { 
 
     setData($input.value, tabs) 
 
     $tabs.innerHTML = `<h1>${$input.value}</h1>`; 
 
     tabs.forEach(tab => { 
 
     $tabs.innerHTML += ` 
 
      <a href='${tab.url}'> 
 
      <p>${tab.title}</p> 
 
      </a> 
 
     `; 
 
     }); 
 
     $tabs.querySelector('h1').addEventListener('click', toggleHidden); 
 
    }); 
 
    };

var setData = function(name, tabs){ 
 
    chrome.storage.local.set({ name: JSON.stringify(tabs) }, function(){ 
 
    // Now data has been saved get ALL data (by passing in null) 
 
    chrome.storage.local.get(null, function(items){ 
 
     console.log(items) 
 
    }); 
 
    }); 
 
}

誰もがこのコードではエラーが表示さん:それはストレージと対話することになっている第2の機能を呼び出しますか? manifest.jsonファイルに "storage"権限の他に拡張機能が設定されている必要がありますか?どんな助けでも大歓迎です。

+0

'name'がnullではないことを確認して、バックグラウンドページのコンソールを見ていることを確認してください。 –

+0

名前がnullではありません。背景ページコンソールを見てどういう意味ですか?私は実際にバックグラウンドページで作業していません。それは問題ですか? –

+0

'console.log'と呼ばれる場所からコンソールを見るべきです。たとえば、バックグラウンドページで呼び出す場合は、バックグラウンドページを開いてコンソールからの出力があるかどうかを確認する必要があります。背景ページをデバッグする方法については、http://stackoverflow.com/documentation/google-chrome-extension/5938/developer-tool-integration/20829/debugging-the-background-page-script#t=201612080838201839112 –

答えて

0

最後に、あなたが望むものを理解しています。

あなたは次の行を呼び出すと、私はあなたがnameがキーになりたいと思いますが、しかし、それは実際にキーとして"name"を使用して、それはあなたのストレージに一つだけのアイテムがあることを意味します、そのキーは"name"です。

chrome.storage.local.set({ name: JSON.stringify(tabs) }) 

は何が欲しいのは、これがComputed property namesと呼ばれ、[name]を使用することです。

chrome.storage.local.set({ [name]: JSON.stringify(tabs) }) 
+0

ご迷惑をおかけして申し訳ありません!それでも、データベースにデータを保存していることを確認するにはどうすればよいですか?私がチェックすると、検査ポップアップのアプリケーションタブの下に、ローカル記憶域またはセッション記憶域のどちらにもデータが入力されません。 –

+0

「chrome.storage」はWebストレージ(ローカルストレージまたはセッションストレージ)とは異なります。 'chrome.storage'にあるものを見るには、' get'メソッドを呼び出して出力するしかありません。しかし、実際にWebストレージを使用したい場合は、 'chrome.storage'ではなく、直接使用する必要があります –

+0

素晴らしい!それは理にかなっている。 1つの最終的な質問...検査時に、QUOTA_BYTES_PER_ITEMが超過していると私は考えています。これは、タブ文字列が長すぎることを意味します。どのように私はこれを回避することができます任意のアイデア? –

関連する問題