Javascript错误:TypeError:';空';不是safari上的对象(评估';事件.目标';)

Javascript错误:TypeError:';空';不是safari上的对象(评估';事件.目标';),javascript,Javascript,我很难集成JavaScript语法。我的代码正在使用Internet Explorer(IE)。但是,我在Safari上运行它时遇到了一个JavaScript错误 这是我的测试代码: document.onmouseup = function hideaddrspopup () { if (event.srcElement.id != 'fieldName') { alert(event.srcElement.id); } } 我试过这样的方法: d

我很难集成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.screlation
仅在IE中工作。如何使其在其他浏览器上工作?

根据:

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

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

因此,请避免使用event.src元素,而应使用。

根据:

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

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


因此,请避免使用event.src元素,而应该使用。

函数中缺少事件变量

document.onmouseup = function hideaddrspopup (event) 
{   

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

函数中缺少事件变量

document.onmouseup = function hideaddrspopup (event) 
{   

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

正如Bhojendra所提到的,不要使用
srceelement
。在访问
id
target
属性之前,请检查对象是否为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浏览器<代码>目标也应该支持它,但如果有必要或没有必要,您可以在没有其他部分的情况下进行测试。

正如Bhojendra提到的,不要使用
srceelement
。在访问
id
target
属性之前,请检查对象是否为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浏览器<代码>目标也应该支持它,但如果有必要,您可以不使用其他部分进行测试。

event.src元素是IE的发明。为了与IE<9兼容,请使用
even.target | | event.srcelment
。event.srcelment是IE的发明。若要与IE<9兼容,请使用
even.target | | event.srcement
。event.srcement实际上不是一个别名,它是一个IE属性,被其他浏览器复制以实现兼容性。@RobG完全同意您的看法。但目前我们只能说alias.event.srcElement不是一个真正的别名,它是一个IE属性,被其他浏览器复制以实现兼容性。@RobG完全同意您的看法。但目前我们只能说它是一个别名。这应该是另一种情况,因为
event.srcmelement
可能返回undefined(根据OP),因此尝试访问其id属性将抛出错误。在IET中,情况应该是相反的,因为
event.srcElement
可能返回未定义的(每个OP),因此尝试访问其id属性将抛出错误。在IEConsider
(event.target | | event.srceelement.id
;-)考虑<代码>(Evest.TeaType事件.SrcEngult.ID.<代码> >;