我正在尝试使用 Firefox Addon SDK 编写我的第一个扩展 - 当前代码只是在测试什么是可能的(只是为了澄清)。
有问题的部分似乎是扩展在第一次加载页面和在子页面之间移动后不工作。页面完全加载,扩展程序“启动”并按预期修改页面(例如在 site.com/directory 上),但在移动到子页面后(site.com/directory/all) 扩展名不再有效。如果我按 CTRL + R 并刷新页面,网站将再次加载,扩展甚至可以在该子页面上运行。
main.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/