Firefox页面模式扩展在第一个子页面之后没有运行,直到页面重新加载

时间:2014-09-17 20:21:37

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

我尝试使用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');

包含就像这样设置仅用于测试目的。站点脚本适用于twitch.tv及其/目录子页面。目前正在寻找directory_header类并在其周围设置边框,但是在移动到目录之后/所有边框将不会再次加载,直到页面被完全重新加载。这种行为有原因吗?

我尝试了什么

我尝试使用

attachTo: ["top", "frame", "existing"]
从第一次看起来它似乎可以帮助,但它没有。与

类似
contentScriptWhen: 'start'

再次,没有结果。

1 个答案:

答案 0 :(得分:2)

听起来像HTML5状态正在改变,其中页面内容通过AJAX进行更改。文档/页面实际上没有变化,因此永远不会激活page-mod。您需要在内容脚本中为历史pushstate事件创建一个侦听器。请参阅this answer了解如何实现这一目标。

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