事件未定义FF

时间:2012-02-17 08:21:25

标签: javascript

dxo.CellClick.AddHandler(function(s, e) {
    alert(s);
    alert(event);
    ChangeBackColor( event.srcElement,e.RowValue,e.ColumnValue,'ROUND');
});

我必须添加事件但无法使其正常工作。适用于chrome和IE ..但不适用于FF

alert->对于s - >对象对象  alert->对于事件 - > chrome和FF中的Object MouseEvent - >没有..控制台显示未定义的事件。

2 个答案:

答案 0 :(得分:1)

在IE中,event是一个全局变量(window的属性),它在JavaScript事件触发之前设置。这是Chrome模拟的非标准行为,对于为IE设计的网站而言是友好的。 Firefox不会模仿这种非标准行为。

standard behaviorevent对象作为参数传递给事件处理程序。你需要在你正在使用的任何中间层找到那个参数(你没有说过,我没有立刻认出它),而是使用它。 (也许它是函数的e参数?或e对象的某些属性?或者s参数或它的某些属性?)

另请注意srcElement特定于IE;您需要检查srcElementtarget(再次,standard form)。

(以免你认为我在这里抨击微软:IE的非标准形式实际上早于标准的形式 - 例如,他们是那些先从旧DOM0转移的人。但是如果他们在标准的前10年内支持标准表格,那就太好了。)

答案 1 :(得分:0)

event.srcElement

这就是原因。 IE和Chrome使用srcElement,Firefox使用target。此外,Firefox期望传递event参数,因此在您的代码中它是未定义的。

你可以尝试这个(虽然我不确定se参数应该来自哪里):

dxo.CellClick.AddHandler(function(event, s, e) {
    alert(s);
    alert(event);
    ChangeBackColor(event.target ? event.target : event.srcElement, e.RowValue, e.ColumnValue, 'ROUND');
});