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

标签 javascript firefox firefox-addon-webextensions

我正在尝试使用 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 的最早通知。但是,您还需要听 onHistoryStateUpdatedonReferenceFragmentUpdated .

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

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

关于javascript - Firefox WebExtensions 选项卡 API 如何获取正在加载的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44820793/

相关文章:

javascript - 当用户登录时,使包含登录表单的下拉菜单消失

javascript - 火狐网络扩展 : check if extension already exists

javascript - 如何从 Firefox 的 webextension 中读取本地文件?

javascript - RxJS 在 Ajax 错误后继续监听

javascript - ReactNative : Cannot update during an existing state transition (such as within `render` ). 渲染方法应该是 Prop 和状态的纯函数

html - 按钮在 Firefox 中无法正确对齐

火狐实时 DOM

java - 加载配置文件时,Selenium 测试需要几分钟才能启动

javascript - Firefox 扩展弹出窗口不会调整大小

javascript - JQuery 循环闪烁图像