Javascript 错误:TypeError:“null”不是 safari 上的对象(评估“event.target
Javascript error: TypeError: 'null' is not an object (evaluating 'event.target') on safari
我在集成我的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
。在访问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浏览器。 target
也应该支持它,但如有必要,您可以在没有其他部分的情况下进行测试。
函数中缺少事件变量
document.onmouseup = function hideaddrspopup (event)
{
if (event.srcElement.id != 'fieldName' || event.target.id != 'fieldName')
{
alert(event.srcElement.id);
alert(event.target.id);
}
}
相关文章:
- 类型错误'未定义'不是对象(正在评估'navigator.connection.type'
- TypeError:undefined不是对象(正在评估'newWindow.focus')
- 避免重新评估和动态卸载用“require”调用的对象
- JavaScript:获取对象的评估属性
- 我可以在对象上下文中评估表达式吗?
- JavaScript 评估 - 如何为对象属性赋值
- 类型错误:'null'不是对象(正在评估'响应.productType')
- Karma+PhantomJS TypeError:undefined不是对象(正在评估scope.jjackpot)
- 在使用onblur进行输入评估时,是否可以获得单击对象的元素id
- TypeError:undefined不是对象(正在评估'this.props')-React Nati
- TypeError:undefined不是一个对象(评估'c.trigger')
- Rails JavaScript 包含 TypeError:“null”不是一个对象(评估 'document.
- Javascript 错误:TypeError:“null”不是 safari 上的对象(评估“event.target
- “'null' 不是对象(评估 'apiData.original_release_date.s
- 在使用javax.script.ScriptEngine对象评估javaScript代码后返回布尔值
- 聚合物,基于对象评估元素
- React Native + Firebase 登录错误:Undefind 不是对象(评估 'this.props.na
- 如何在 AngularJS 中注入 PersistenceJS(undefined 不是一个对象(评估 'persist
- TypeError: undefined 不是对象(评估 'M.layout.force')
- undefined不是一个对象(评估'$scope.students.pay')