我正在修改当前在IE6和IE8中运行的Web应用程序,以便在IE11中运行。由于大量的HTML不符合IE11中标准模式的要求,因此该网站将以兼容模式运行。
我发现的一个问题是TEXTAREA字段的maxLength值。在以下示例中,JavaScript“alert”语句将在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目前不是一个选项。
答案 0 :(得分:1)
当IE11在兼容模式下运行时 - 它模拟IE7(为了验证这一点,在此模式下加载http://whatsmyuseragent.com/)。
看起来由于某种原因,IE7中无法访问maxLength属性。您可以添加一些冗余以使代码中的值可访问。
添加复制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
}
这应该普遍适用。