javascript - 在页面重新加载之前,Firefox page-mod 扩展在第一个子页面之后不运行

标签 javascript firefox firefox-addon firefox-addon-sdk

我正在尝试使用 Firefox Addon SDK 编写我的第一个扩展 - 当前代码只是在测试什么是可能的(只是为了澄清)。

有问题的部分似乎是扩展在第一次加载页面和在子页面之间移动后不工作。页面完全加载,扩展程序“启动”并按预期修改页面(例如在 site.com/directory 上),但在移动到子页面后(site.com/directory/all) 扩展名不再有效。如果我按 CTRL + R 并刷新页面,网站将再次加载,扩展甚至可以在该子页面上运行。

ma​​in.js

// Import the page-mod API
var pageMod = require("sdk/page-mod");
// Import the self API
var self = require("sdk/self");
// Create a page mod
pageMod.PageMod({
  include: "*",
  contentScriptFile: [self.data.url("jquery-2.1.1.min.js"), self.data.url("script.js")]
});

script.js

$(".directory_header").css('border', '#500 solid 10px');

Include 设置成这样只是为了测试目的。站点脚本应该在 twitch.tv 上工作和他们的/directory 子页面。目前正在寻找 directory_header 类并在其周围设置边框,但是在移动到目录/所有边框后,直到页面完全重新加载后才会再次加载。这种行为有原因吗?

我尝试过的

我试过

attachTo: ["top", "frame", "existing"]

乍一看似乎可以提供帮助,但事实并非如此。类似于

contentScriptWhen: 'start'

再次,没有结果。

最佳答案

这听起来像是 HTML5 状态更改,其中页面的内容正在通过 AJAX 进行更改。文档/页面实际上并没有改变,所以 page-mod 永远不会被激活。您需要在内容脚本中为历史 pushstate 事件创建一个监听器。参见 this answer关于如何做到这一点。

在回调中,您必须重新调用您的 script.js 代码。

关于javascript - 在页面重新加载之前,Firefox page-mod 扩展在第一个子页面之后不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899669/

相关文章:

javascript - 如何编写像 firebug 一样在页面上下文中运行 javascript 代码的 firefox 扩展

firefox - ff HttpRequester 插件 - 上传带有发布数据的文件

javascript - 使用 Angular foreach 循环重新排列 JSON

javascript - 根据出现频率对数据数组进行排序

javascript - 输入并加载 url 来调用 JS 时要使用哪个 XUL 元素?

Firefox 增强了 XMLHttpRequest 的内容类型

html - padding-bottom 在 Firefox 和 IE 中忽略没有内容的溢出元素

javascript - 如何在 Firefox 开发者工具 Web 控制台中测试复制粘贴?

javascript - mootools 和 nodejs

Javascript - 更改月份的第一天