0

現在のところ、Chrome拡張機能を使用していて、データを保存するためにChromeストレージAPI(chrome.storage.sync.set)を使用していますが、動作させるために問題が発生しています。Chrome拡張ストレージAPIを使用してCRUD操作を実行するにはどうすればよいですか?

問題は、一度エントリを保存し、別のエントリを保存したければ、前のエントリが削除されるということです。

  • Popup.html

    <!DOCTYPE html> 
    <html> 
    <head> 
        <meta charset="utf-8" /> 
    </head> 
    <body> 
        <div id="data"></div> 
        <input type="text" id="text"></input> 
        <button id="set">Set</button> 
        <script src="popup.js"></script> 
    </body> 
    </html>` 
    
  • popup.js

    document.body.onload = function() { 
        chrome.storage.sync.get("data", function(items) { 
        if (!chrome.runtime.error) { 
         console.log(items); 
         document.getElementById("data").innerText = items.data; 
        } 
        }); 
    } 
    
    document.getElementById("set").onclick = function() { 
        var d = document.getElementById("text").value; 
        chrome.storage.sync.set({ "data" : d }, function() { 
        if (chrome.runtime.error) { 
         console.log("Runtime error."); 
        } 
        }); 
        window.close(); 
    } 
    

削除前のものせずにデータのトンを保存する方法はありますし、可能性がありますクロムストレージAPIを使用して保存したデータに対してCRUD操作を実行するにはどうすればよいですか?

+1

あなたのコードは 'data'は、以前に保存したものは何でも上書きされます。追加する場合は、別のキー名を使用するか、単にストレージから値を読み込み、追加、保存します。 – wOxxOm

+0

[ドキュメント](https://developer.chrome.com/extensions/storage#property-sync)を参照してください。同期の制限は100kBで、各オブジェクトは最大8kBです。 – wOxxOm

+0

私はあなたを得ない。 –

答えて

2

これは、あなたがchrome.storageでキーの値を追加することができる方法である。

あなたのコードで
function storage_sync_append(val){ 
    // In get, {'data': []} sets the key value pair if it didn't exist; 
    // in this case the value is an empty Array 
    chrome.storage.sync.get({'data': []}, result => { 
     var temp = result.data; 
     temp.push(val); 
     chrome.storage.sync.set({ 'data': temp }, function() { 
      if (chrome.runtime.error) { 
      console.log("Runtime error."); 
      } 
     }); 
    }); 
} 

:さておき、あなたが持っている場合は、複数の配列については

document.getElementById("set").onclick = function() { 
    var d = document.getElementById("text").value; 
    storage_sync_append(d); 
    window.close(); 
} 

chrome.storageで保管し、追記機能は、任意のキーで動作するように書き換えることができます。

function storage_sync_append(key, data){ 
// 
    chrome.storage.sync.get({ [key] : []}, result => { 
     var temp 
     for(property in result) 
      if(property == key) 
       temp = result[property]; 

     temp.push(data); 
     chrome.storage.sync.set({ [key] : temp }, function() { 
      if (chrome.runtime.error) { 
      console.log("Runtime error."); 
      } 
     }); 
    }); 
} 
+0

ありがとう、Kundrata。できます。 –

関連する問題