javascript - Internet Explorer 中的 srcElement.readOnly 和 target.readOnly 问题

标签 javascript jquery internet-explorer readonly

我不确定我是否理解 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/

相关文章:

javascript - 如何更改 Javascript 对象的类型?

javascript - 如何在守夜人中操纵输入对象的范围?

javascript - 语法错误 : missing ; before statement in JSON

javascript - 如何使用 Pace.JS 在加载期间显示 Div

javascript - 为什么我的航点销毁函数调用会抛出错误?

html - IE 中的按钮颜色不会改变。 (背景图像 : linear-gradient)

javascript - 如何显示通过 div 中的 html 输入选择的照片?

java - deployjava.js 中 code 属性的作用

css - IE7 <input type ="submit"> 底部有黑边,如何删除?

javascript - 在 Internet Explorer 中禁用文本选择