Javascript 错误:TypeError:“null”不是 safari 上的对象(评估“event.target

Javascript error: TypeError: 'null' is not an object (evaluating 'event.target') on safari

本文关键字:对象 评估 event target 不是 TypeError 错误 null Javascript safari      更新时间:2023-09-26

我在集成我的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' 不是对象(正在评估 'event.target')'

我知道event.scrElement只能在IE中工作。如何使其在其他浏览器上运行?

根据 MDN:

此功能是非标准的,不在标准轨道上。不要在面向 Web 的生产站点上使用它:它不适用于每个用户。实现之间也可能存在很大的不兼容性,并且将来行为可能会发生变化。

Event.srcElement 是标准 Event.target 属性的专有别名。它特定于旧版本的Microsoft Internet Explorer。

所以只要避免使用event.srcElement,你应该使用event.target。

正如Bhojendra提到的,不要使用srcElement。在访问idtarget属性之前检查对象是否为 null,如下所示。

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也应该支持它,但如有必要,您可以在没有其他部分的情况下进行测试。

函数中缺少事件变量

document.onmouseup = function hideaddrspopup (event) 
{   
   if (event.srcElement.id != 'fieldName' || event.target.id != 'fieldName')
   {   
     alert(event.srcElement.id);
     alert(event.target.id);
   }
}