该程序取自《Pro JavaScript Techniques》一书,用于为元素创建类似悬停的功能。
我不明白作者在评论中说“规范化事件对象”的意思。
你能告诉我吗
a)为什么这是必要的,解释如果不标准化会发生什么
b) 提供的代码是如何实现效果的
谢谢。
var div = document.getElementsByTagName('div')[0];
div.onmouseover = div.onmouseout = function(e) {
//Normalize the Event object
e = e || window.event;
//Toggle the background colover of the <div>
this.style.background = (e.type == 'mouseover') ? '#EEE' : '#FFF';
};
最佳答案
它指的是window.event
,IE 的非标准版本的事件对象。如果没有标准化,它至少会在一个浏览器中崩溃。
如果参数是 truthy,代码的作用是将 e
设置为自身(本质上是无操作)。 (事件参数设置正确)。如果不是(在 IE 中),它将其设置为 window.event
。
关于JavaScript "normalize event object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5306844/