我有一个扩展程序,可以使用chrome.tabs.onUpdated事件侦听器检测每次更改网页的时间。此事件侦听器中的代码根据页面URL执行某些任务。我还希望在从一个选项卡切换到另一个选项卡时执行这些任务,但这不会触发chrome.tabs.onUpdated事件侦听器,因此我会使用chrome.tabs.onActivated监听选项卡更改。
问题是使用chrome.tabs.onActivated没有给我我刚刚切换到的标签的URL,这是我需要的。有人可以帮我吗?
由于
答案 0 :(得分:7)
另外 到您已经 ALREADY 用于其他功能的chrome.tabs.onUpdated
事件(您在上面描述) ),您也可以使用 chrome.tabs.get
方法从 tabId
的事件对象中抓取onActivated
,然后传递给一个函数。但是,在这种情况下,恕我直言选项2对你来说是更好的选择:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
//... whatever other stuff you were doing anyway
});
chrome.tabs.onActivated.addListener(function(evt){
chrome.tabs.get(evt.tabId, function(tab){
alert(tab.url); //the URL you asked for in *THIS QUESTION*
});
});
onUpdated
事件一次(更好):在同一事件中,同时处理您的其他内容和您正在寻找的内容:
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
//... whatever other stuff you were doing anyway
chrome.tabs.getSelected(null, function(tab) {
alert(tab.url); //the URL you asked for in *THIS QUESTION*
});
});
您的manifest.json
文件应具有" 标签权限":
{ "name": "My extension", ... "permissions": [ "tabs" ], ... }
答案 1 :(得分:0)
您在使用chrome.tabs.onActivated时有正确的想法。当您获得onActivated的事件时,您还应该获取activeInfo对象,该对象应包含选项卡ID。有了这个,你可以做chrome.tabs.get(),传入那个tab标签,传递给chrome.tabs.get()回调的tab对象应该包含URL(虽然注意你需要&# 34;制表符"清单中的权限以获取URL。