Javascript错误:TypeError:';空';不是safari上的对象(评估';事件.目标';)
我很难集成JavaScript语法。我的代码正在使用Internet Explorer(IE)。但是,我在Safari上运行它时遇到了一个JavaScript错误 这是我的测试代码: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
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.<代码> >;