2014-10-06 27 views
0

我試圖從chrome.storage.local加載內容,但它不起作用(它總是返回相同的結果,[object OBJECT])。 這是我的代碼:Chrome.storage.local得到錯誤的值

function load() 
{ 
    var loginC = ""; 
    chrome.storage.local.get('loginC', function(result){ 
    loginC = result; 
     if (loginC != "") { 
      document.getElementById("login").value = loginC; 
     } 
    }); 

    var passC = ""; 
    chrome.storage.local.get('passC', function(result){ 
    passC = result; 
     if (passC != "") { 
      document.getElementById("pass").value = passC; 
     } 
    }); 
} 

load(); 
+2

仔細查看['chrome.storage.local.get']的文檔(https://developer.chrome.com/extensions/storage#method-StorageArea-get) – 2014-10-06 10:12:31

回答

1

作爲documentation狀態,回調接收包含結果的對象:

回調參數應看起來像這樣的函數:

function(object items) {...};

objectitems

對象的鍵值映射中的項目。

它以這種方式完成,因爲一個get操作可以檢索多個值。

所以在一般情況下,代碼應該是這樣的:

chrome.storage.local.get('keyName', function(result) { 
    /* use result.keyName */ 
}); 

而且你的代碼可以簡化爲這樣:

chrome.storage.local.get(['loginC', 'passC'], function(result) { 
    if (result.loginC) { // Will catch both "" and undefined 
     document.getElementById("login").value = result.loginC; 
    } 
    if (result.passC) { 
     document.getElementById("pass").value = result.passC; 
    } 
}); 
1

get方法格式{loginC: /*..*/ }返回一個對象爲result變量。使用result.loginCresult.passC來獲取該值。