繁体   English   中英

Firefox WebExtensions选项卡API如何获取正在加载的URL

[英]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的最早通知。 但是,您还需要收听onHistoryStateUpdatedonReferenceFragmentUpdated

可通过tabs.onUpdated事件获得对选项卡显示的URL的更新。 对于听起来像您想要的东西,通知您显示的URL已更改,这很可能是您想要收听的内容。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM