0
你好我有一个简单的firefox扩展(基于附加SDK)和pageMod。 pageMod注入一些脚本的页面时,它调用一个函数附加SDK调用dispatchEvent不会从内容脚本发送事件到页面
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代码,它的工作原理。但我需要从contentScript派发事件。
P.S.我也尝试使用unsafeWindow.document而不是文档,并使用jQuery事件/事件侦听器,但它不工作。
如果你用'textContent'替换'innerText'(这是MSIE-only),数据设置是否正确?乍一看,我没有看到你的代码有什么问题,它应该工作。 –
数据设置正确。事件调度有问题。实际上,页面上的事件侦听器并不捕获从内容脚本发送的事件。 –
它应该 - 明确允许从可信代码发送事件到不可信代码。您确定页面上的事件侦听器已正确注册吗?如果您从网页本身发送活动,会收到什么? –