2014-01-10 65 views
0

我有一个IE9怪癖模式的问题。我已经注册了一个oncahnge事件到一个输入元素。这工作到目前为止,但在IE9我们的网站进入怪癖模式(它是这样的),我有问题,浏览器不会传递事件对象到我的处理程序方法。IE9怪癖模式不会传递事件参数给事件处理程序

document.getElementById("foo").onchange=myChangeMethod; 
function myChangeMethod(event){ 
    //In IE 9 quirks mode "event" is undefined... 
    if(event != undefined){ 
    //do stuff 
    } 
} 

这可以在IE10进行测试(ⅰ假设在IE9 ALS)与打开WebDeveloper控制台(F12),设置BrowserMode为 “IE9” 和文档模式到(IE5-怪癖)。然后,浏览器的行为与将本地IE9设置为“IE 9兼容模式”并将文档模式设置为“怪癖”相同。

是否有可能以某种方式获取事件对象?

提前致谢!

回答

1

我假设事件是全球性的,在IE怪癖模式,所以检查事件参数和分配window.event如果是undefined可以解决这个问题:

function myChangeMethod(evt){ 
    //In IE 9 quirks mode "event" is undefined... 
    evt = evt || window.event; //<== HERE 
    // additionally in quirks mode evt.target is evt.srcElement, 
    // so if needed you could assign evt.target as: 
    var originator = evt.target || evt.srcElement; 
    if(evt){ 
    //do stuff 
    } 
} 
+0

感谢那些没有的伎俩!我另外手动设置了event.target,因为它在这里被称为event.srcElement! – Tarator

+0

嗨@Tarator,很高兴我能帮上忙。我在回答中添加了一个'target' vs'srcElement'注释。 – KooiInc

+0

@Teemu你是对的,它是只读的。我会调整答案 – KooiInc

相关问题