firefox中的“事件未定义”

时间:2013-04-02 06:01:40

标签: javascript html events firefox ember.js

HTML代码,它在级别选择事件上调用函数。这段代码是用Ember框架编写的。

{{ action "onLevelSelect" this on="change" target= "view"}}

通过触发此事件调用的Javascript函数:

onLevelSelect : function(event) {
    var getSelectedLevel = event.target.selectedOptions[0].label;   // error line

    /*rest of the code goes below*/
}

说到“错误行”,我收到此错误。

  

"ReferenceError: event is not defined".

我试过了window.event和event.which,我也尝试将事件显式发送到函数"onLevelSelect"

4 个答案:

答案 0 :(得分:2)

我解决了这个问题,但忘了更新。 解决方案是

Firefox不支持使用ember handlebar语法来处理ClickChange等事件。但它可以在Chrome中使用。所以,我使用jQuery函数来处理这些事件,如click(event){}change(event){}等(我们也可以使用像onClick()onChange()这样的HTML函数。

答案 1 :(得分:0)

这种行为是正确的。 如果使用操作助手,Ember不会传递事件对象。您能否显示更多的视图和模板代码?你想要完成什么?

答案 2 :(得分:0)

我遇到了同样的问题,我在把手中使用onclick={{action ...}}而不仅仅是{{action ...}}来解决这个问题。我也在其他地方看过这个问题。使用动作助手本身并不传递事件对象。但是使用onclick可以。

所以基本上将代码更改为:

onclick={{ action "onLevelSelect" this on="change" target= "view"}}

答案 3 :(得分:0)

在firefox中,在onclick函数回调中无法访问全局window.event。所以你不应该依赖于此。 <input {{action 'onLevelSelect'}} value="test" /> - 此处您不会在event方法中收到onLevelSelect个对象。

但在下面,您将收到event个对象作为最后一个参数

<input onchnage={{action 'onLevelSelect'}} value="test" />

我在this answer详细解释