我有简单的 Firefox 扩展(基于附加 SDK)和pageMod
.
pageMod
向页面注入一些脚本,该页面调用一个函数:
function dispatchEvent(name, data){
try {
data = data || {};
// passing some data through html element
document.getElementById('MyDiv').innerText = JSON.stringify(data);
var evt = document.createEvent('Event');
evt.initEvent(name.toString(), true, true);
if(document.getElementById('MyDiv').dispatchEvent(evt))
console.log("Dispatch event: "+name+" data: "+JSON.stringify(data));
} catch (e) {
console.log("Error:" + e);
}
}
dispatchEvent("MyEvent", {});
在网页上我有事件监听器,通过MyDiv.addEventListener(...)
. 问题是注入的脚本不会向页面发送任何事件。该dispatchEvent
函数返回 true,但没有任何反应。这是我的pageMod
代码:
var myMod = pageMod.PageMod({
include: ["http://localhost/mysite/*"],
contentScriptFile: [data.url("js/script.js")],
contentScriptWhen: "end",
onAttach: function onAttach(worker) {
console.log("CS injected");
}
});
如果我contentScript
通过 Firebug 控制台运行代码,它可以工作,但我需要从contentScript
.
PS 我也尝试使用unsafeWindow.document
而不是文档,并使用 jQuery 事件/事件侦听器,但它也不起作用。