我正在尝试使用 WebExtensions tabs 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 获取进程内导航s。您很可能只想查看带有 frameId:0
的事件。 webNavigation.onBeforeNavigate
事件具有新 URL 的最早通知。但是,您还需要听 onHistoryStateUpdated
和 onReferenceFragmentUpdated
.
可通过 tabs.onUpdated
event 更新选项卡显示的 URL 。对于听起来您想要的内容,显示的 URL 已更改的通知,这很可能是您想要收听的内容。
通过将内容脚本插入选项卡并检测将导致导航的用户操作,可以获得页面将导航的信息(即在导航开始之前)。这不会检测所有可能的导航源。除非您需要这样做,否则应该避免这样做,因为它会占用更多资源。
关于javascript - Firefox WebExtensions 选项卡 API 如何获取正在加载的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820793/