如何在javascript中判断IE事件类型

如何在javascript中判断IE事件类型,javascript,javascript-events,Javascript,Javascript Events,从serval的书中学习一些js代码 像 假设我有一个元素 <h1 onclick="doSomething(event)">Hello World2</h1> Hello World2 当我点击它时,它不会在IE中发出警报(至少在IE6中),我使用的方式不正确 第二个问题是,假设它可以工作,每次我使用它 我必须发送一个事件参数,即使我不这样做? 我可以在没有参数的情况下判断IE事件类型吗?这是因为,对于您所拥有的,e始终是对事件对象的引用event在IE中解析为窗口

从serval的书中学习一些js代码 像

假设我有一个元素

<h1 onclick="doSomething(event)">Hello World2</h1>
Hello World2
当我点击它时,它不会在IE中发出警报(至少在IE6中),我使用的方式不正确

第二个问题是,假设它可以工作,每次我使用它

我必须发送一个事件参数,即使我不这样做?
我可以在没有参数的情况下判断IE事件类型吗?

这是因为,对于您所拥有的,
e
始终是对
事件
对象的引用<
onclick
属性中的code>event在IE中解析为
窗口。event
在Firefox等不支持
窗口的浏览器中。event
在属性值的范围内有一个
event
变量可用。另见

确实需要检查
window.event
的情况是使用属性分配事件处理程序时:

var h1 = document.getElementsByTagName("h1")[0];
h1.onclick = doSomething;

你还没有写过其他的评论这就是为什么它什么都不做

根据你的代码,当你点击Hello world链接时,一个事件通过,你这样写(!E),这是错误的,所以它什么都不做

试试这个,它会提醒你的

function doSomething(e) {
    if (e) {
        var e = window.event;
        alert("this is IE!");
    } 
}

如果您想使用window event,您可以像firefox和ie中的window.event.target一样使用window event

function doSomething(e) {
  if (window.event) {
    e = window.event;
    alert("this is IE!");
  }
  // here you can use e in either IE or Gecko/webkit
}

我不认为这能解决任何问题。问题是,在问题中的代码中,
e
始终存在于所有浏览器中。在我看来,我发布的内容可以工作并发出警报,而最初发布的内容也可以工作,但什么都不做。你说得对,它解决了在IE中显示警报的直接问题。
function doSomething(e) {
  if (window.event) {
    e = window.event;
    alert("this is IE!");
  }
  // here you can use e in either IE or Gecko/webkit
}