以下代码适用于浏览器:
return Point(x: theX, y: theY)
当我将其更改为
时var event = event || window.event;
var eTarget = event.target || event.srcElement;
var eTargetId = eTarget.id;
也有效。
当我将代码更改为
时var eTargetId = event.target ? event.target.id : event.srcElement.id;
它在IE 678中不起作用。我收到以下错误:
SCRIPT5007:预期的对象。
为什么会这样?
答案 0 :(得分:14)
如果您没有检查基值是否真的是对象,请不要尝试读取属性,而不是null。
通常会做
var eTargetId = event.target && event.target.id || event.srcElement.id;
或者,如果事件目标可能没有ID,
var eTargetId = event.target && event.target.id
|| event.srcElement && event.srcElement.id
|| "";
答案 1 :(得分:13)
这可能发生,因为event.target
为空,但event
不是。如果event.target
为空,则前两次尝试使用短路来防止进一步评估。
答案 2 :(得分:3)
首先评估event
,event.target
和event.srElement
var eTargetId = ((event = event || window.event)
&& (eTargetId = event.target || event.srcElement)
&& eTargetId["id"]) || void 0;