Javascript Firefox element.event起作用,但element.addEventlistener不起作用

Javascript Firefox element.event起作用,但element.addEventlistener不起作用,javascript,firefox,iframe,dom-events,event-listener,Javascript,Firefox,Iframe,Dom Events,Event Listener,我在Firefox中的addEventListener方面遇到了一些问题。 我在我的网站上有一个iframe,用于我自己创建的所见即所得区域 我希望iframe看起来更像一个普通的文本区域,所以我希望在焦点上的iframe周围有一个边框。第一个tp(textpreview)是这样发现的(并且运行良好): 然后我尝试附加一个eventlistener,并在事件触发时记录。这适用于Chrome、Opera和最新的IE,但不适用于Firefox: //Doesn't work in Firefox t

我在Firefox中的
addEventListener
方面遇到了一些问题。 我在我的网站上有一个iframe,用于我自己创建的所见即所得区域

我希望iframe看起来更像一个普通的文本区域,所以我希望在焦点上的iframe周围有一个边框。第一个tp(textpreview)是这样发现的(并且运行良好):

然后我尝试附加一个
eventlistener
,并在事件触发时记录。这适用于Chrome、Opera和最新的IE,但不适用于Firefox:

//Doesn't work in Firefox
tp.body.addEventListener('focus', function(){ console.log('focus...')});
tp.body.addEventListener('blur', function(){ console.log('blur...')});
但是,这确实有效:

//Firefox
tp.body.onfocus = function(){ console.log('focus...')};
tp.body.onblur = function(){ console.log('blur...')};

我已经清除了Firefox上的缓存,并尝试使用另一台计算机,但仍然没有成功使第一个选项工作。

Firefox由于某种原因没有在body元素上启动事件处理程序,而是必须将事件处理程序附加到iframe本身或iframe中的实际元素

专注于iframe本身而不是主体,似乎在所有浏览器中都能工作

tp.addEventListener('focus', function(){ console.log('focus...')});
tp.addEventListener('blur', function(){ console.log('blur...')});

谢谢,这在Firefox中很有效。虽然现在在webkit或IE中似乎不起作用,但我想我可以同时使用它们。在Chrome中效果很好?实际上它在Chrome中不起作用,这是我尝试的另一个在Firefox中不起作用的解决方案,所以我想你必须同时使用这两种解决方案?显然是的。可能可以将eventlistener附加到iframe主体的子元素,但这会使事情更加复杂,我将使用这两种解决方案。谢谢你的快速反应。@adeneo我认为“某种原因”是,在这种情况下,身体实际上没有得到关注,至少在壁虎身上是这样
tp.document.activeElement
肯定能说明问题。
tp.addEventListener('focus', function(){ console.log('focus...')});
tp.addEventListener('blur', function(){ console.log('blur...')});