IE9 Quirks模式不会将事件参数传递给事件处理程序

时间:2014-01-10 08:10:20

标签: javascript internet-explorer internet-explorer-9

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

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

这可以在IE10中进行测试(我想在IE9中),打开WebDeveloper控制台(F12),将BrowserMode设置为“IE9”,将文档模式设置为(IE5-Quirks)。然后浏览器的行为相同,如将本机IE9设置为“IE 9兼容模式”,将文档模式设置为“怪癖”。

是否有可能以某种方式获取event-Object?

提前致谢!

1 个答案:

答案 0 :(得分: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
  }
}