错误未定义书签:Chrome扩展-书签2返回未定义

我正在创建一个 chrome 扩展,允许使用 ctrl + shift + number 导航到用户的前四个书签;一切都很顺利,并且功能为第一,第三和第四书签,但第二书签似乎每次都返回未定义。

这是我的 js 文件

const bookmarks = [];
chrome.tabs.onCreated.addListener(function(tab) { //refresh bookmarks on new tab opening
    var bookmarkTreeNodes = chrome.bookmarks.getTree(
    function(bookmarkTreeNodes){
        bookmarksArray(bookmarkTreeNodes)
    })
})
chrome.commands.onCommand.addListener(function(command){ 
    var bookmarkTreeNodes = chrome.bookmarks.getTree( //also check bookmarks on command execution
        function(bookmarkTreeNodes){
            bookmarksArray(bookmarkTreeNodes)
        })
    printArray(); //temp
    console.log('command:',command.charAt(8)); //tab number temp 
    tabSelected = command.charAt(8);
    chrome.tabs.update({
        url: ("" + bookmarks[tabSelected-1])
    })    
});
function printArray(){
    for(var i = 0; i<bookmarks.length; i++){
        console.log(bookmarks[i]);
    }
}
    
function bookmarksArray(bookmarkTree){
    for(var i=0; i<bookmarkTree.length; i++){
        bookmarks[i] = ("" + bookmarkTree[i].url); //url is insert to each spot as string 
        console.log("" + bookmarks[i])
        if(bookmarkTree[i].children){
            bookmarksArray(bookmarkTree[i].children)
        }
    }
}
1

由于每个循环都从0开始,所以在bookmarksArray()的递归调用中写入bookmarks的相同元素。使用push()附加到数组,而不是写入与bookmarkTree相同的索引。

function bookmarksArray(bookmarkTree) {
  for (var i = 0; i < bookmarkTree.length; i++) {
    bookmarks.push(String(bookmarkTree[i].url));
    console.log(bookmarks[i])
    if (bookmarkTree[i].children) {
      bookmarksArray(bookmarkTree[i].children)
    }
  }
}

本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处

(505)
安全员c证怎么网上继续教育:网上商店购物车安全(modified shopping cart)
上一篇
怎么添加开机启动程序:添加应用程序组而不在Xcode上添加开发人员帐户
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(75条)