Firefox WebExtensions选项卡API如何获取URL

时间:2017-06-29 09:08:24

标签: javascript firefox firefox-webextensions

我尝试使用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中测试。

1 个答案:

答案 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事件最早通知新网址。但是,您还需要收听onHistoryStateUpdatedonReferenceFragmentUpdated

通过tabs.onUpdated event可以获得对标签显示的URL的更新。对于您想要的内容,通知显示的网址已更改,这很可能是您想要收听的内容。

通过将内容脚本插入选项卡并检测将导致导航的用户操作,可以获得页面导航(即在导航开始之前)的信息。这不会检测所有可能的导航来源。除非你需要这样做,否则应该避免它,因为它需要更多的资源。