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 - >没有..控制台显示未定义的事件。
答案 0 :(得分:1)
在IE中,event
是一个全局变量(window
的属性),它在JavaScript事件触发之前设置。这是Chrome模拟的非标准行为,对于为IE设计的网站而言是友好的。 Firefox不会模仿这种非标准行为。
standard behavior是event
对象作为参数传递给事件处理程序。你需要在你正在使用的任何中间层找到那个参数(你没有说过,我没有立刻认出它),而是使用它。 (也许它是函数的e
参数?或e
对象的某些属性?或者s
参数或它的某些属性?)
另请注意srcElement
特定于IE;您需要检查srcElement
或target
(再次,standard form)。
(以免你认为我在这里抨击微软:IE的非标准形式实际上早于标准的形式 - 例如,他们是那些先从旧DOM0转移的人。但是如果他们在标准的前10年内支持标准表格,那就太好了。)
答案 1 :(得分:0)
event.srcElement
这就是原因。 IE和Chrome使用srcElement
,Firefox使用target
。此外,Firefox期望传递event
参数,因此在您的代码中它是未定义的。
你可以尝试这个(虽然我不确定s
和e
参数应该来自哪里):
dxo.CellClick.AddHandler(function(event, s, e) {
alert(s);
alert(event);
ChangeBackColor(event.target ? event.target : event.srcElement, e.RowValue, e.ColumnValue, 'ROUND');
});