我的js代码只是不执行chrome.tabs.query行。当我在调试器上逐步执行它时,它将立即转到下一个执行语句,即返回。我看了这个,我明白这是一个异步调用,但即使在等待调试器或chrome.tabs.query内部的警报之后,也不会发现。请帮忙。
/*
Given the name of a beast, get the URL to the corresponding image.
*/
debugger;
function beastNameToURL(beastName) {
switch (beastName) {
case "Save Session":
debugger;
chrome.tabs.query({currentWindow: true}, function(tabs) {
debugger;
alert("1");
tabs.forEach(function(tab){
unsafeWindow.console.log("helllllloooooooooooooooooo");
unsafeWindow.console.log(tab.url);
});
for (var tab of tabs) {
if (tab.active) {
console.log(tab.url);
}
}
});
return;
case "Load Session":
debugger;
return chrome.extension.getURL("beasts/snake.jpg");
case "Turtle":
return chrome.extension.getURL("beasts/turtle.jpg");
}
}
/*
Listen for clicks in the popup.
If the click is not on one of the beasts, return early.
Otherwise, the text content of the node is the name of the beast we want.
Inject the "beastify.js" content script in the active tab.
Then get the active tab and send "beastify.js" a message
containing the URL to the chosen beast's image.
*/
document.addEventListener("click", function(e) {
if (!e.target.classList.contains("btn")) {
return;
}
var chosenBeast = e.target.textContent;
var chosenBeastURL = beastNameToURL(chosenBeast);
chrome.tabs.executeScript(null, {
file: "/content_scripts/beastify.js"
});
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {beastURL: chosenBeastURL});
});
});
我还为清单中的标签提供了权限。
{
"manifest_version": 2,
"name": "Session",
"version": "1.0",
"description": "Adds a browser action icon to the toolbar. Click the button to choose a beast. The active tab's body content is then replaced with a picture of the chosen beast. See https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Examples#beastify",
"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify",
"icons": {
"48": "icons/beasts-48.png"
},
"applications": {
"gecko": {
"id": "beastify@mozilla.org",
"strict_min_version": "45.0"
}
},
"permissions": [
"activeTab",
"tabs"
],
"browser_action": {
"default_icon": "icons/beasts-32.png",
"default_title": "Session",
"default_popup": "popup/choose_beast.html"
},
"web_accessible_resources": [
"beasts/frog.jpg",
"beasts/turtle.jpg",
"beasts/snake.jpg"
]
}