我正在创建一个 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)
}
}
}
由于每个循环都从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)
}
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表边看边学立场,如若转载,请注明出处
评论列表(75条)