ano*_*oot 30 javascript firefox javascript-events addeventlistener
我在这部分遇到了麻烦:
var ex = {
exampl: function(){
var ref=window.event.target||window.event.srcElement; // here
alert(ref.innerHTML); // (example)
}
}
Run Code Online (Sandbox Code Playgroud)
这个函数以这种方式调用:
document.body.childNodes[0].addEventListener('mouseover',ex.exampl,true);
Run Code Online (Sandbox Code Playgroud)
只有Firefox说window.event没有定义......
我不知道该怎么做,让它发挥作用.它在webkit浏览器和opera中运行得非常好(我无法在MSIE中检查它,我不关心它).
为什么会这样?
Jos*_*eph 22
尝试使用传递的参数获取事件(e在本例中命名).我测试了这两个window.event和e铬支持.
var ex = {
exampl: function(e){
console.log(window.event);
console.log(e);
//check if we have "e" or "window.event" and use them as "evt"
var evt = e || window.event
}
}
Run Code Online (Sandbox Code Playgroud)
mpm*_*mpm 15
因为window.event在Firefox中不存在.那是因为浏览器有不同的事件模型,你必须处理他们的差异或使用像jQuery这样的库,不必处理浏览器之间的所有差异.欢迎来到DOM.
Chrome本身也没有它.IE不会将每个事件触发器传递给自己的事件对象,而是将属性放入window.event并将其移交.这是有效的,因为你一次只处理一个事件.每个浏览器应该具有的是window.Event,它是事件对象的实际构造函数.如果您在IE8及以下的任何地方看到'window.event',请尝试在空白选项卡上打开控制台并在那里记录或提醒它.有可能是在您正在查看的页面上手动添加它.
如果你看一下事件处理程序的crossbrowser规范化代码,你会经常看到:
if(!e){ e = window.event; }
Run Code Online (Sandbox Code Playgroud)
这是规范处理旧版IE的代码的事件.在现代浏览器中,e应该是通过参数传递的对象,而不是对window属性的引用.
| 归档时间: |
|
| 查看次数: |
56045 次 |
| 最近记录: |