[英]Firefox WebExtensions tabs API how to get URL being loaded
我正在尝试使用WebExtensions选项卡API获取当前的选项卡URL。
我正在使用以下方法查询选项卡:
// Get the current window's active tab.
browser.tabs.query({ currentWindow: true, active: true }, function(tabs) {
if (tabs[0].status == 'loading') {
// The user is currently loading a new page.
} else {
// The user is not loading a page.
}
});
如果在运行选项卡查询时用户正在加载页面,则tabs[0]
对象如下所示:
{
"id": 114,
"index": 102,
"windowId": 3,
"selected": true,
"highlighted": true,
"active": true,
"pinned": false,
"status": "loading",
"incognito": false,
"width": 1278,
"height": 987,
"audible": false,
"mutedInfo": {
"muted": false
},
"url": "http://example.com/",
"title": "Example Domain",
"favIconUrl": "http://example.com/favicon.ico"
}
您可以看到"status"
设置为"loading"
。 这意味着页面加载完成后, "url"
可能会更改。
无论如何,是否知道用户正在加载哪个页面?
在Firefox 54中测试。
可以从webNavigation
event中进行导航。 您很可能只希望查看具有frameId:0
事件。 webNavigation.onBeforeNavigate
事件具有新URL的最早通知。 但是,您还需要收听onHistoryStateUpdated
和onReferenceFragmentUpdated
。
可通过tabs.onUpdated
事件获得对选项卡显示的URL的更新。 对于听起来像您想要的东西,通知您显示的URL已更改,这很可能是您想要收听的内容。
通过将内容脚本插入选项卡并检测将导致导航的用户操作,可以获得有关页面将被导航的信息(即在导航开始之前)。 这不会检测所有可能的导航源。 除非您需要这样做,否则应避免使用它,因为它会占用更多资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.