Chrome扩展,Javascript:从地址栏获取URL
Chrome extension, Javascript: getting URL from address bar
我有一个扩展,我正在工作,有一个"弹出"按钮在栏上,
我访问一个站点(例如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
)的函数。当其他函数完成了它的任务(例如查找选定的选项卡),它将执行所提供的函数。然而,与此同时,请求之后的代码将定期执行。
相关文章:
- 后焦点更改为IE 11中的地址栏,而不是转移到表单中的下一个控件
- 地址栏中url的缩短
- XSS通过地址栏注入
- 当地址栏出现时,安卓系统上的css固定页脚被隐藏
- 当移动地址栏出现/消失时,防止更改窗口高度
- 是否可以更改更改特定事件在地址栏或浏览器中的URL
- 自动隐藏地址栏问题
- 火狐侧边栏获取标签网址
- Firefox for Android - 地址栏内容重叠.有没有解决方案
- 如何在地址栏中的URL更改Firefox JPM时获得通知
- 我可以在浏览器地址栏上获取#值吗
- 如何获取客户端在地址栏上键入的地址
- 在弹出元素中打开 url(获取新标题和地址栏)
- 在 PHP 中获取顶部框架(浏览器中的地址栏)URL
- 从地址栏获取数据并将其显示在页面上
- 从地址栏获取页面文件名
- 在地址栏中执行javascript以获取&运行cookie's值
- Chrome扩展,Javascript:从地址栏获取URL
- asp.net mvc - javascript 获取“浏览器地址栏”中表示的路径名
- 从地址栏获取URL