我目前正在制作Chrome扩展程序。
使用一些代码,我想用一个按钮关闭一些标签,并将标签的URL作为Chrome书签保存在自定义文件夹中。
所以我下面是关闭标签并创建书签的代码。
要关闭选项卡,我有一个循环,用于检查选项卡ID是否与当前选项卡ID相匹配。如果它们匹配,则什么也不会发生,否则,它将创建一个书签并将其保存到自定义文件夹中。
我的代码:
$('#hideTabs').click(function() {
chrome.tabs.query({active:true,windowType:"normal", currentWindow: true},function(d){document.getElementById("Current-tab-id").innerHTML = d[0].id;})
chrome.tabs.query({}, function (tabs, bookmarkNode, bookmarkBar, BookmarkTreeNode ) {
for (var i = 0; i < tabs.length; i++) {
console.log(tabs[i].id);
var CurrentTabId = document.getElementById('Current-tab-id').innerHTML;
console.log(CurrentTabId);
if(CurrentTabId == tabs[i].id) {
} else {
chrome.bookmarks.create({
'title': 'Extension bookmarks'},
function(newFolder) {
console.log("added folder: " + newFolder.title);
createBookmark(newFolder.id);
});
function createBookmark(extensionsFolderId) {
chrome.bookmarks.create({'parentId': extensionsFolderId,
'title': 'Extensions doc',
'url': 'http://code.google.com/chrome/extensions'});
}
chrome.tabs.remove(tabs[i].id, function callback(){})
}
}
});
});
问题是我只想在用户单击按钮后创建一次文件夹。
然后,我尝试添加仅在'i' = 1
时才执行的IF语句。
if (i === 1) {
chrome.bookmarks.create({
'title': 'Extension bookmarks'},
function(newFolder) {
console.log("added folder: " + newFolder.title);
createBookmark(newFolder.id);
});
}
function createBookmark(extensionsFolderId) {
chrome.bookmarks.create({'parentId': extensionsFolderId,
'title': 'Extensions doc',
'url': 'http://code.google.com/chrome/extensions'});
}
这看起来应该可以工作,但是要使boolmark保存在正确的文件夹中,必须使用回调函数function(newFolder)
。
所以我的问题是,是否可以只创建一次文件夹而不影响回调函数?