【问题标题】:Javascript IE EventJavascript IE 事件
【发布时间】:2010-10-31 22:02:25
【问题描述】:

这适用于 Firefox,但不适用于 IE。任何帮助将非常感激!谢谢!

  var form = document.getElementById('theform')
    /* create the event handler */
    form.gen.onclick = function( evt ) {
        var f = evt.target.form
        var y = f.year.value
        var m = f.month.value
        genCalendar( document, y, m, 'theCalendar' )
    }

【问题讨论】:

  • 你应该用 ; 结束语句 - 行尾隐含的 ; 是一种后备机制,我会考虑使用它是不好的做法(其他人可能不同意)

标签: javascript internet-explorer events javascript-events


【解决方案1】:

要在符合标准的浏览器和 IE 中获取事件的目标,请使用

var target = evt ? evt.target : window.event.srcElement;

MDC 有一个overview of the different properties of event objects。

【讨论】:

  • 我觉得应该是:var target = evt.target ? evt.target : window.event.srcElement;
【解决方案2】:

如前所述,IE 不会将事件对象作为参数传递。试试这个:

var form = document.getElementById('theform')
  /* create the event handler */
  form.gen.onclick = function( evt ) {
    if(!evt)
      evt = window.event;
    var f = evt.target.form
    var y = f.year.value
    var m = f.month.value
    genCalendar( document, y, m, 'theCalendar' )
}

或者更好的是,使用跨浏览器库,例如 Prototype.js 或 jQuery。

【讨论】:

  • 另外,您必须在 IE 中使用 .srcElement 而不是 .target
【解决方案3】:
  • 此脚本何时运行?在 DOM 完全加载后,您可能必须在 onload 上运行此脚本
函数 go() { alert('dom 已加载:现在注册事件处理程序') ; } 脚本> 正文>

【讨论】:

    【解决方案4】:

    这就是为什么您应该考虑使用 javascript 库,例如 jquery、YUI 或原型。这些库抽象出基于浏览器的差异,从而简化了您的编码。

    【讨论】:

      【解决方案5】:

      根据我自己的搜索,最成功的是这个

      function clickHandler(e){
       var elem, evt = e ? e:event;
       if (evt.srcElement)  elem = evt.srcElement;
       else if (evt.target) elem = evt.target;
      
       alert (''
        +'You clicked the following HTML element: \n <'
        +elem.tagName.toUpperCase()
        +'>'
       )
       return true;
      }
      
      document.onclick=clickHandler;
      

      来自他们非常有帮助和解释性的http://www.javascripter.net/faq/eventtargetsrcelement.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 2011-12-30
        • 2019-03-14
        • 1970-01-01
        • 2011-10-10
        • 2012-04-18
        • 2016-08-09
        相关资源
        最近更新 更多