我正在开发一个扩展,该扩展在栏上有一个“弹出”按钮,
我访问一个网站(例如 google.com),按下按钮,我在 popup.html 中运行以下代码:
window.addEventListener("load", windowLoaded, false);
function windowLoaded() {
chrome.tabs.getSelected(null, function(tab) {
localStorage['url_in_address_bar']=tab.url;
});
}
但它不会保存 Google 地址,而是保存自己的地址,如下所示:“chrome://extensions/”
。
如何让它保存最后一个地址而不是它本身?
最佳答案
您的代码显示了问题。 getSelected
将选项卡作为回调返回,这意味着当 Chrome 找到所选选项卡时执行回调。这是异步,稍后执行:
window.addEventListener("load", windowLoaded, false);
function windowLoaded() {
// 1) request selected tab
chrome.tabs.getSelected(null, function(tab) {
localStorage['url_in_address_bar']=tab.url; // 3) selected tab is stored
});
}
// 2) a tab is created
var saved_email = localStorage['blocker_user_email'];
if (saved_email === undefined || saved_email == "a@a.com")
{
//self.close();
chrome.tabs.create({url: '0_register.html'});
} else{
// self.close();
chrome.tabs.create({url: '1_options.html'});
}
您可以通过将代码的第二部分放入回调函数来解决它:
window.addEventListener("load", windowLoaded, false);
function windowLoaded() {
chrome.tabs.getSelected(null, function(tab) {
localStorage['url_in_address_bar']=tab.url;
var saved_email = localStorage['blocker_user_email'];
if (saved_email === undefined || saved_email == "a@a.com")
{
//self.close();
chrome.tabs.create({url: '0_register.html'});
} else{
// self.close();
chrome.tabs.create({url: '1_options.html'});
}
});
}
回调函数是您作为另一个函数的参数提供的函数(例如 getSelected
)。当其他函数完成其任务(例如查找选定的选项卡)时,它将执行提供的函数。但与此同时,请求之后的代码将定期执行。
关于javascript - Chrome 扩展程序,Javascript : getting URL from address bar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6710852/