我正在爲Chrome瀏覽器擴展,基本上可以使用書籤。 以下代碼位於彈出式html文件中,並且正文onload事件中正在調用bookmarkHelper()函數。它應該檢查是否存在名爲「TestFolder」的書籤文件夾。如果存在,它會刪除文件夾中的所有書籤。如果沒有,它會創建空文件夾。谷歌瀏覽器擴展中的變量值不一致
var rootFolder = undefined;
function bookmarkHelper() {
// Create TestFolder folder if it doesn't exist
chrome.bookmarks.getTree(function(tree) {
otherFolder = tree[0].children[1].children;
rootFolder = undefined;
for(i=0; i<otherFolder.length; i++) {
if(otherFolder[i].title == "TestFolder") {
rootFolder = otherFolder[i];
return;
}
}
chrome.bookmarks.create({'parentId': "2",
'title': 'TestFolder'},
function(newFolder) {});
});
// Remove all bookmarks from the rootFolder
for (i=0; i<rootFolder.children.length; i++)
chrome.bookmarks.remove(rootFolder.children[i].id);
}
現在我的問題是,當文件夾中有書籤時,它不會刪除它們。但如果我將最後3行更改爲
setTimeout(function(){
for (i=0; i<rootFolder.children.length; i++)
chrome.bookmarks.remove(rootFolder.children[i].id);
}, 100);
它刪除書籤。 在另一種情況下,當我檢查彈出窗口時,它會使用原始代碼刪除書籤。這很奇怪,我不知道該怎麼做。 我在這裏是否缺少一些匿名函數線程類型的概念?因爲AFAIK,JS是單線程的。
感謝您的幫助! :) – 2011-03-07 03:38:14