1

这是一个非常基本的Firefox插件,它会打开一个新的tab并加载指定的html文件。
它将ContentScript附加到tab,但由于某种原因,alert('in event listener');永远不会执行?
虽然alert('in script');确实运行。
这是谁?window.addEventListener未在点击事件中执行

main.js

var tabs = require("sdk/tabs"); 

tabs.open({ 
    url: require('sdk/self').data.url('html/view.html'), 
    isPinned: true, 
    onOpen: function onOpen(tab) { 

    console.log("onOpen"); 
    tab.attach({ 
     contentScriptFile: require('sdk/self').data.url('js/controller.js') 
    }); 
    } 
}); 

controller.js

window.addEventListener('click', function(event) { 

    alert('in event listener'); 

}, false); 

alert('in script'); 
alert(document.getElementById("text").value); 

// output 
// console.error: MyApp: 
// Message: TypeError: document.getElementById(...) is null 

view.html

<html> 
    <body> 
     <textarea id="text">yo</textarea> 
    </body> 
</html> 
+0

它工作正常http://jsfiddle.net/D3FvU/。也许你正在做event.stopPropagation进一步下降,但我们不知道从这个代码 –

+0

你试过它作为一个Firefox插件?我看到jsfiddle可以工作,但是当打包为addon时,相同的代码不起作用。我不会在任何地方调用'event.stopPropagation' – bobbyrne01

+0

这很奇怪,请尝试'document.addEventListener' – Blagoh

回答

0

移动到溶液中。

更改onOpenonReady而不是document.addEventListener使用window.addEventListener。 bobbyrne01报告说,它的工作原理,不知道为什么这固定它。

相关问题