我不确定我是否理解 IE 在我正在使用的脚本中的行为。这是我正在使用的脚本的一部分,它似乎在 Chrome 中运行良好
$(document).keydown(function (event) {
var keyvalue = event.which || event.keyCode;
var eventtarget = event.srcElement.nodeName || event.target.nodeName;
var readonlycheck = event.srcElement.readOnly || event.target.readOnly;
});
问题出在 readonlycheck 变量上。在 IE 中,我得到以下错误 “无法获取未定义或空引用的属性‘readOnly’。”
在 Chrome 中,如果已定义,则 readOnly 返回“true”,否则返回“false”。 IE 给了我一个错误,即使它仍然适用于 nodeName。
我真正感到困惑的地方是我可以通过更改最后一行来消除 target.readOnly 来使其工作。所以这似乎在两种浏览器中都有效......
var readonlycheck = event.srcElement.readOnly;
谁能解释为什么这对 readOnly 的行为不同?另外,我认为 srcElement 只是 IE,那么为什么 Chrome 在没有 target.readOnly 的情况下仍然可以工作?
如有任何帮助,我们将不胜感激。我对 javascript 和 jquery 还是很陌生,所以我确定我遗漏了一些东西。
最佳答案
var readonlycheck = event.srcElement.readOnly || event.target.readOnly;
应该改成
var readonlycheck = (event.srcElement !== undefined) ? event.srcElement.readOnly : event.target.readOnly;
您是如何编写代码的,即使 srcElement.readOnly 确实存在,当它评估为 false 时它会尝试读取 event.target,这会破坏 IE。
关于javascript - Internet Explorer 中的 srcElement.readOnly 和 target.readOnly 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15417943/