2012-02-17 38 views
0
dxo.CellClick.AddHandler(function(s, e) { 
    alert(s); 
    alert(event); 
    ChangeBackColor(event.srcElement,e.RowValue,e.ColumnValue,'ROUND'); 
}); 

我要补充的事件,但不能使它工作。在Chrome和IE中工作..但不是在FF中事件没有定义FF

alert-> for s - > Object object alert-> for event - > Object MouseEvent in chrome and FF - > nothing .. console show events not defined。

回答

1

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

standard behavior在于event对象传递到事件处理程序作为一个参数。你需要在你使用的任何中间层(你没有说过,而且我没有立即认出它)中找到这个参数,然后用它来代替。 (也许是函数的e参数或e对象的某些属性或s说法或它的一些特性??)

还要注意的是srcElement是特定于IE浏览器;您需要检查srcElementtarget(同样是standard form)。

(免得你想我在这里抨击微软:IE的非标准形式实际上通用的标准  —例如,他们是谁从旧DOM0东西搬到上第一的那些,但它会如果他们会支持的第一个10年的标准中的标准形式是很好。)

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'); 
}); 
+0

已经尝试过..没有工作,。显示未定义的事件。 – Umesh251 2012-02-17 08:26:49

+0

e未定义// – Umesh251 2012-02-17 08:45:55