我有此代码来获取鼠标位置。 我想知道是否真的需要:
if (event.pageX != null)
是否有event.pageX
是null
的情况?
我还需要event || window.event;
吗?
function handleMouseMove(event) {
event = event || window.event;
if (event.pageX != null) {
key = event.pageX * event.pageY;
};
}
如果我这样重写代码怎么办?
function handleMouseMove(event) {
key = event.pageX * event.pageY;
}
答案 0 :(得分:1)
如果由于某种原因,侦听器在窗口完成加载之前触发,则event.pageX
将是null
,并且该函数将返回错误。尽管您使用的是鼠标事件监听器,但不太可能在窗口的onload
函数之前触发,但是最好检查pageX
是否为空。
底线:安全胜过遗憾。
答案 1 :(得分:1)
我认为null检查是不必要的。正如阿萨菲所说,pageX
在初始渲染时仅null
。由于pageX
被包装在一个函数中,因此pageX
为null
时不太可能被调用。 Here's是Mozilla文档中的直观示例。我们还希望保留||
语句以支持较旧的浏览器。
您的总体代码可以写为:
function handleMouseMove(event) {
event = event || window.event;
key = event.pageX * event.pageY;
}