Javascript 错误:TypeError:'null' 不是 safari 上的对象(评估'event.target')
我在集成 JavaScript 语法时遇到了困难。我的代码可以在 Internet Explorer (IE) 上运行。但是,在 Safari 上运行它时遇到了 JavaScript 错误。
这是我的测试代码:
document.onmouseup = function hideaddrspopup () {
if (event.srcElement.id != 'fieldName') {
alert(event.srcElement.id);
}
}
我尝试了类似这样的操作:
document.onmouseup = function hideaddrspopup() {
if (event.srcElement.id != 'fieldName' || event.target.id != 'fieldName') {
alert(event.srcElement.id);
alert(event.target.id);
}
}
但是控制台上仍然出现错误:
'TypeError: 'null' is not an object (evaluating 'event.target')'
我知道
event.scrElement
仅在 IE 中有效。如何使其在其他浏览器上运行?
根据 MDN :
This feature is non-standard and is not on a standards track. Do not use it on production sites facing the Web: it will not work for every user. There may also be large incompatibilities between implementations and the behavior may change in the future.
Event.srcElement 是标准 Event.target 属性的专有别名。它特定于旧版本的 Microsoft Internet Explorer。
因此,请避免使用 event.srcElement,而应使用 event.target 。
正如 Bhojendra 所提到的,不要使用
srcElement
。在访问
id
或
target
属性之前,请检查对象是否为空,如下所示。
document.onmouseup = function hideaddrspopup ()
{
if (e && e.target && e.target.id!='fieldName')
{
alert(e.target.id);
}
else if(e && e.srcElement && e.srcElement.id!='fieldName')
{
alert(e.srcElement.id);
}
}
使用
else if
进行了更新,以支持旧版 IE 浏览器。
target
也应该支持它,但您可以在不使用 else 部分的情况下测试它是否必要。
您的函数中缺少事件变量
document.onmouseup = function hideaddrspopup (event)
{
if (event.srcElement.id != 'fieldName' || event.target.id != 'fieldName')
{
alert(event.srcElement.id);
alert(event.target.id);
}
}