我尝试使用WebExtensions tabs API获取当前标签网址。
我使用这种方法查询标签:
// 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中测试。
答案 0 :(得分:1)
过程导航可从webNavigation
event获得。您很可能只想查看setValues() {
this.myForm.setValue({
id: this.obj.id,
})
// I like to inject 'FormBuilder' in constructor and use 'fb'
this.myForm.setControl('tips', this.fb.array(this.obj.tips))
}
的事件。 webNavigation.onBeforeNavigate
事件最早通知新网址。但是,您还需要收听onHistoryStateUpdated
和onReferenceFragmentUpdated
。
通过tabs.onUpdated
event可以获得对标签显示的URL的更新。对于您想要的内容,通知显示的网址已更改,这很可能是您想要收听的内容。
通过将内容脚本插入选项卡并检测将导致导航的用户操作,可以获得页面将导航(即在导航开始之前)的信息。这不会检测所有可能的导航来源。除非你需要这样做,否则应该避免它,因为它需要更多的资源。