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事件/事件侦听器,但它不工作。

+0

如果你用'textContent'替换'innerText'(这是MSIE-only),数据设置是否正确?乍一看,我没有看到你的代码有什么问题,它应该工作。 –

+0

数据设置正确。事件调度有问题。实际上,页面上的事件侦听器并不捕获从内容脚本发送的事件。 –

+0

它应该 - 明确允许从可信代码发送事件到不可信代码。您确定页面上的事件侦听器已正确注册吗?如果您从网页本身发送活动,会收到什么? –

回答

相关问题