Javascript错误:TypeError:' null'在safari上不是一个对象(评估' event.target')

时间:2016-02-02 06:45:31

标签: javascript

我在集成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。如何使其在其他浏览器上运行?

3 个答案:

答案 0 :(得分:4)

根据MDN

  

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

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

因此,请避免使用event.srcElement,而应使用event.target

答案 1 :(得分:1)

您在功能中错过了事件变量

document.onmouseup = function hideaddrspopup (event) 
{   

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

答案 2 :(得分:1)

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