2012-04-24 25 views
2

如果我寫:如何在Chrome的書籤API中獲取數組?

var source = new Array(); 
function doSomething(a){ 
    chrome.bookmarks.search(a,function(items){ 
     for(var i = 0;i<items.length;i++) 
     { 
      source[i] = items[i]; 

     } 

    }); 
    console.log(source[0].title); 
    alert(source[0].title); 

} 

在控制檯中,我可以看到的值,但什麼驚動是「不確定」。

有人可以告訴我爲什麼和如何寫入以獲取值嗎?

回答

1

您在錯誤的範圍內執行alert - 您應該在回調函數中執行此操作。試試這個:

function doSomething(a){ 
    chrome.bookmarks.search(a,function(items){ 
     var source = []; 
     for(var i = 0;i<items.length;i++) 
     { 
      source[i] = items[i]; 

     } 
     console.log(source[0].title); 
     alert(source[0].title); 
     doSomethingWithResult(source); 
    });  

} 

你已經看到在控制檯中正確的價值,因爲它表明參考其已經被填充在這一刻(在回調函數)的值。

+0

是的,你是對的。但是如果我想返回source [0] .title,它會再次返回undefined。我怎樣才能返回值? – Tom 2012-04-24 05:10:32

+0

這就是回調函數的工作方式;)相反,您應該將'executeFunctionWithResult(source [0])'放在'alert(source [0] .title)' – hamczu 2012-04-24 05:17:00

+0

的位置。我希望source []被髮送到contentscript通過消息傳遞。難麼? – Tom 2012-04-24 09:15:11