[英]Chrome Extension Oddity with Tab API
我正在編寫Chrome擴展程序,並且在打開超過5個標簽時遇到一些困難。 這是源代碼。
{
"manifest_version": 2,
"name": "Test",
"description": "testing this",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"bookmarks"
]
}
<!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
});
}
}
目標是能夠單擊文件夾(現在只是一個符號文件夾的鏈接)並打開該文件夾中的所有鏈接。 目前我點擊鏈接到文件夾會發生什么,它會打開第一個5.為了獲得某種形式的日志,我添加了:
var bookmark = document.createElement('a');
bookmark.innerHTML = children[i].title;
document.body.appendChild(bookmark);
document.body.appendChild(document.createElement("br"));
到addChildren()函數。 它打印出每個孩子。 我遇到的問題是當我點擊文件夾時它只打開前5個標簽然后我猜測焦點會離開彈出窗口,所以它沒有完成。 我無法在網上找到其他任何幫助
任何幫助表示贊賞。 如果我需要澄清任何事情,請告訴我。
我懷疑問題就像你說的那樣,當你創建一個新標簽時,它默認是active
,所以彈出窗口會失去焦點並卸載。 您可以通過以下兩種方式之一解決此問題。 您可以將網址列表發送到后台頁面,然后將其全部打開。 這將起作用,因為打開選項卡時后台頁面保持加載狀態。
修復它的另一種可能更好的方法是創建將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});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.