如何解决firefox下window.event的问题

window.event在IE和Opera中是一个全局变量,所以我们可以在dom对象所调用的函数中使用它。
但是在firefox中,event只是对当前触发的事件有效,有时我们想得到一些event的值(如键盘编码),就不是一件容易的事情了。
目前网上常见的方法是将event当作参数传递给dom对象的触发函数,不过这种方式在一些场合下并不适合,如为一个对象增加一个键盘抬起的监听函数,addEventListener(”onkeyup”, “doSomth(event)”),此时在firfox下,同样会报event没有定义的错误。

今天终于找到了一个能够比较圆满的解决这个问题的方案,有兴趣的同学可以看看这个例子里的toggleHighlight函数,就都明白了。
eventsexample1.html

function toggleHighlight(evt)
{
     evt = (evt) ? evt : ((window.event) ? window.event : "")

     // 这行是我新加的,用于获得当前的keycode,为了浏览器兼容要写不少莫名的代码 -_-!
     keyCode = evt.keyCode ? evt.keyCode : (evt.which ? evt.which :evt.charCode);

     if (evt) {
          var elem = (evt.target) ? evt.target : evt.srcElement
          elem.className = (evt.type == "mouseover") ? "highlight" : "normal"
     }
}

还有一篇文章,对event做了更为详尽的介绍:Supporting Three Event Models at Once

22 条评论

  1. 匿名:

    fsd:emtf:

  2. 匿名:

    :grin:

  3. 呵呵:

    :affect: :wink::wink::!::!::idea::roll::evil::evil::lol::?::?::roll::twisted::twisted:

  4. liyuehui:

    现在网上有好多的关于“按回车实现TAB键功能”的介绍,但是我试了好多,在firefox里都不可用,我获得的异常信息是针对它的: “evt.which = 9;” ,提示:次属性为只读。试试了好多的方法,都不可用,希望得到你的帮着。我的邮箱:liyuehui5205@gmai.com 。静候佳音。

  5. 匿名:

    :twisted:

  6. 匿名:

    :cry: :faint::emtf::zk::down::roll::wink::ill::affect::!::emtf:

  7. 匿名:

    :faint:

  8. 匿名:

    :emtf: :emtf::emtf::emtf::emtf::emtf:

  9. 匿名:

    :emtf: :emtf::emtf::emtf::emtf::emtf::faint::faint:

  10. 匿名:

    :affect:

  11. 匿名:

    :faint:

    http://www.cl13.cn

  12. 匿名:

    :mrgreen: :neutral: :smile: :grin: :surprised: :sad: :sad: :wink: :vacuity: :money: :emtf: :hard: :love: :affect: :ill: :redface: :down: :zk: :zk: :zk: :faint: :arrow: :idea:

  13. 匿名:

    :cool: :lol: :mad: :razz: :redface: :ill: :down: :zk: :faint: :arrow: :idea: :?: :!: :wink: :roll: :twisted: :evil: :cry: :affect: :sweat: :hard: :vacuity: :emtf: :surprised: :shock: :???: :sad:

  14. 匿名:

    :wink: :sad: :sad:

  15. 匿名:

    :mrgreen: :neutral: :smile: :grin: :sad: :surprised: :shock: :???: :cool: :lol: :mad: :razz: :redface: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :faint: :zk: :down: :ill: :affect: :sweat: :love: :hard: :vacuity: :money: :emtf:

  16. 匿名:

    thanks very :grin:

  17. 匿名:

    :surprised:

  18. 匿名:

    :mrgreen: :neutral: :smile: :grin: :sad: :surprised: :shock: :???: :cool: :lol: :mad: :razz: :redface: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :faint: :zk: :down: :ill: :affect: :sweat: :love: :hard: :vacuity: :money: :emtf: :emtf: :money: :vacuity: :hard: :love: :sweat: :affect: :ill: :down: :zk: :faint: :arrow: :idea: :?: :!: :wink: :roll: :twisted: :evil: :cry: :redface: :razz: :mad: :lol: :cool: :???: :shock: :surprised: :sad: :grin: :smile: :neutral: :mrgreen:

  19. 匿名:

    :mrgreen: :neutral: :smile: :grin: :sad: :surprised: :shock: :???: :cool: :lol: :mad: :razz: :redface: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :faint: :zk: :down: :ill: :affect: :sweat: :love: :hard: :vacuity: :money: :emtf:

  20. hello java:

    路过学习一下

    http://www.dwww.cn

    :mrgreen:

  21. 匿名:

    :lol: :ill: ;-) :mrgreen: :arrow: :affect: :money: :| :zk: :love: :???: :?: :lol: :x :!: :ill: :vacuity: :twisted: :idea: :hard: :sweat: :surprised: :grin: :faint: :smile: :shock: :evil: :sad: :roll: :down: :cry: :redface: :razz: :cool: :cool: :cry: :down: :emtf: :evil: :faint: :grin: :hard: :idea: :ill: :lol: :love: :money: :mrgreen: :arrow: :affect: :???: :?: :!: ;-) :| :zk: :x :vacuity: :twisted: :sweat: :surprised: :smile: :shock: :sad: :roll: :redface: :razz:

  22. 匿名:

    :roll: :redface: :redface: :faint: :faint: :faint: :faint: :evil: :emtf: :emtf:

留下评论