我在集成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。如何使其在其他浏览器上运行?
答案 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
。在访问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
也应该支持它,但如果有必要,你可以在没有其他部分的情况下进行测试。