javascript - 是否可以在内容脚本中使用 onHistoryStateUpdated 事件?

标签 javascript firefox-addon-webextensions

我正在开发一个 Firefox 插件,它需要观察通过 history.pushState 进行的选项卡 URL 更新。我目前正在学习整个 Firefox 的 WebExtension API - 这是我在 Greasemonkey 用户脚本时代之后的第一个插件。

我尝试使用 MDN 上的 API 文档中提供的稍微编辑过的代码(删除了可选过滤器参数):

function logOnHistoryStateUpdated(details) {
    console.log("onHistoryStateUpdated: " + details.url);
    console.log("Transition type: " + details.transitionType);
    console.log("Transition qualifiers: " + details.transitionQualifiers);
}

browser.webNavigation.onHistoryStateUpdated.addListener( logOnHistoryStateUpdated );

这段代码对我有用,当在后台脚本中使用时,日志消息显示在浏览器控制台中。我想要的是让这段代码在内容脚本中工作,但事实并非如此。简而言之,两个控制台中都不会打印任何日志消息。

为了确定发生了什么,我添加了以下代码:

console.log( typeof browser );
console.log( typeof browser.webNavigation );
console.log( typeof browser.webNavigation.onHistoryStateUpdated );
console.log( typeof browser.webNavigation.onHistoryStateUpdated.addListener );

打印值如下:

object
undefined

所以,webNavigation API 似乎在内容脚本中不可用,我是对的还是做错了什么?我确实在 list 中添加了 webNavigation 权限(它与我在工作后台脚本中使用的 list 文件相同)。我在 MDN 上没有看到任何说明此 API 只能在 bg 脚本中使用或不能在内容脚本中使用的内容。

最佳答案

所以看来答案是否定的,或者至少没有人愿意回答。我决定在后台脚本中使用此 API 进行消息传递,以便内容脚本了解检测到的更改。

关于javascript - 是否可以在内容脚本中使用 onHistoryStateUpdated 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48318004/

相关文章:

javascript - 为 Thunderbird Firefox 编写 Web 扩展

javascript - 如何根据字符串值实例化对象

javascript - 如何在 ASP.NET MVC 项目中组织前端 JavaScript 代码?

javascript - 打印/预览忽略我的 Print.css

javascript - Firefox Web 扩展 "Can' t 访问死对象”错误

javascript - 如何制作类似于广告拦截器的徽章计数器?

javascript - Materialise 下拉菜单在移动设备中禁用 Sly jQuery 滚动条

javascript - 如何将 this arg 传递给 javascript 函数

javascript - 区分 webRequest.onBeforeRequest 原始页面与注入(inject)页面

javascript - 数组键路径上的索引找不到任何值