Javascript 带有Tab API的Chrome扩展奇点
我正在写一个Chrome扩展,打开超过5个标签有点困难。这是源代码 manifset.json popup.html 添加到addChildren()函数。它把每个孩子都打印出来。我遇到的问题是,当我点击文件夹时,它只会打开前5个选项卡,然后我猜焦点会离开弹出窗口,所以它不会完成。我在网上找不到任何其他帮助Javascript 带有Tab API的Chrome扩展奇点,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在写一个Chrome扩展,打开超过5个标签有点困难。这是源代码 manifset.json popup.html 添加到addChildren()函数。它把每个孩子都打印出来。我遇到的问题是,当我点击文件夹时,它只会打开前5个选项卡,然后我猜焦点会离开弹出窗口,所以它不会完成。我在网上找不到任何其他帮助 感谢您的帮助。如果我需要澄清什么,请告诉我。我怀疑问题正如您所说的,当您创建新选项卡时,默认情况下它处于活动状态,因此弹出窗口会失去焦点并卸载。你可以用两种方法中的一种来解决这个问题。您可以
感谢您的帮助。如果我需要澄清什么,请告诉我。我怀疑问题正如您所说的,当您创建新选项卡时,默认情况下它处于活动状态,因此弹出窗口会失去焦点并卸载。你可以用两种方法中的一种来解决这个问题。您可以将url列表发送到后台页面,并让其全部打开。这将起作用,因为打开选项卡时背景页保持加载状态 另一种可能更好的修复方法是创建
active
属性设置为false的选项卡,然后在它们全部打开后切换到组中的第一个选项卡。代码:
function addChildren(children) {
for(var i = 0; i < children.length; i++){
chrome.tabs.create({
url: children[i].url,
active: false
});
}
// switch focus to first opened tab
chrome.tabs.query({url:children[0].url},function(tabs){
chrome.tabs.update(tabs[tabs.length-1].id,{active:true});
});
}
函数addChildren(children){
对于(变量i=0;i
是的,就是这样。我讨厌答案如此明显,而你却不能完全理解它。非常感谢你!
<!doctype html>
<html>
<head>
<title>Testing</title>
<style>
body {
min-width: 357px;
overflow-x: hidden;
}
</style>
<script src="popup.js"></script>
</head>
<body>
</body>
</html>
document.addEventListener('DOMContentLoaded', function () {
chrome.bookmarks.getTree(function (stuff){
traverseBookmarks(stuff[0].children[0].children);
});
});
function traverseBookmarks(bookmarkTreeNodes) {
for(var i=0;i<bookmarkTreeNodes.length;i++) {
var bookmark = document.createElement('a');
if(bookmarkTreeNodes[i].url){
bookmark.href = bookmarkTreeNodes[i].url;
bookmark.target = "_blank";
}
else{
(function(num) {
bookmark.addEventListener("click", function() {
addChildren(bookmarkTreeNodes[num].children, false );
})})(i);
document.body.appendChild(document.createElement("br"));
}
bookmark.innerHTML = bookmarkTreeNodes[i].title;
document.body.appendChild(bookmark);
document.body.appendChild(document.createElement("br"));
if(bookmarkTreeNodes[i].children) {
traverseBookmarks(bookmarkTreeNodes[i].children);
}
}
}
function addChildren(children) {
for(var i = 0; i < children.length; i++){
// will open each link in the current window
chrome.tabs.create({
url: children[i].url
});
}
}
var bookmark = document.createElement('a');
bookmark.innerHTML = children[i].title;
document.body.appendChild(bookmark);
document.body.appendChild(document.createElement("br"));
function addChildren(children) {
for(var i = 0; i < children.length; i++){
chrome.tabs.create({
url: children[i].url,
active: false
});
}
// switch focus to first opened tab
chrome.tabs.query({url:children[0].url},function(tabs){
chrome.tabs.update(tabs[tabs.length-1].id,{active:true});
});
}