我正在修改目前运行在IE6和IE8中的web应用程序,以运行在IE11中。由于大量的HTML不符合IE11标准模式的要求,该网站将在兼容模式下运行。
我发现的一个问题是TEXTAREA字段的maxLength值。在下面的示例中,JavaScript“警报”语句将在IE6、IE8和IE11标准模式中打印值"350“,但在IE11兼容性模式中提供”未定义“。
HTML:
<TD><TEXTAREA ID="myfield" NAME="myfield" CLASS="clsText" maxLength="350" COLS=120 ROWS=3 STYLE = "WIDTH:620px"></TEXTAREA></TD>JavaScript:
var a = document.getElementById(frmCRISLogon.myfield.id);
alert(a.maxLength);有人知道为什么吗?有没有办法在IE11兼容模式下获得值?我意识到正确的解决方案是改进代码,这样我们就不必使用兼容性模式,但我正在寻找一些我可以快速实现的东西。JQuery目前不是一个选项。
发布于 2014-10-29 17:42:38
当IE11在兼容性模式下运行时-它模拟IE7 (为了验证这一点,在此模式下加载http://whatsmyuseragent.com/ )。
看起来由于某种原因,maxLength属性在IE7中是不可访问的。您可以添加一些冗余以使代码中的值可访问。
添加复制maxLength值的自定义属性:
<textarea id="myfield" name="myfield" class="clsText" maxlength="350" ml="350" cols=120 rows=3 style="WIDTH:620px"></textarea>那么,在您的代码中,您可以做到
var a = document.getElementById("myfield");
var maxLength = a.getAttribute("maxLength");
if (maxLength == null) {
// now you know you're either in IE7 or IExx/compatability mode
maxLength = a.getAttribute("ml"); // grab value of backup attribute
}这应该是普遍可行的。
https://stackoverflow.com/questions/26637105
复制相似问题