最近发现项目中遇到这样一个情况,以前系统在IE6下是好的,但是在IE8下有些输入框就出现数据拿不到等情况,后来发现在IE8下有很多表达式都是不能用的,包括现在说到的documen.all.item()拿到的对象总是为空,经过仔细收集资料发现原来这个doctype有关
请看下面一个例子:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>document.all.item test</title>
</head>
<body>
<input name="12345" type="text">
<input type="button" value="doSomething" onclick="_click()"/>
</body>
<script type="text/javascript">
function _click(){
document.all.item("12345").value = "abcdefg";
}
</script>
</html>
当你点击按钮,文本框会赋值吗?
如果你用IE6,我可以肯定的告诉你,会...
但是你如果用IE8打开,肯定是不会的...
不信可以试试。
有两个解决办法,一个是在doctype前加一句<!-- --->
另一个就是将doctype注释起来或去掉。这两个方法取得的效果是一样的,为什么呢?
在doctype前加注释语句块,可以将doctype的功能取缔,因为doctype必须位于html的第一行,放在第二行就失去了意义,第二个方法就不用说了。
如果你也有同样的问题,你可以检查一下你的jsp,很可能你在jsp中doctype不是写在第一行,但是你查看源文件,很可能doctype就在第一行出现,所以咱们以后编写html就要注意了。
为什么加了doctype就不支持了呢,首先document.all.item本身就不是w3c推出的标准,只是一个微软搞得一套东东,现在微软想在IE8中不维护这个了,所以就搞得现在不支持了。
所以咱们以后写程序一定要用w3c的标准,用document.getElementsByName()[0]代替它
。相信这个不会不支持的。
分享到:
相关推荐
在JavaScript中,`document.all`属性是Internet Explorer的专有特性,它允许脚本访问文档中的所有元素。... ### `document.all`的用法 ...然而,在仅针对IE浏览器的项目中,`document.all`仍能发挥其独特的作用。
8. IE浏览器中`getElementsByName`和`document.all[name]`不能用来取得div元素,这一点在编写兼容性代码时需要特别注意。 9. 对于table标签的操作,IE浏览器不允许对其和tr元素的innerHTML属性赋值,且使用...
在IE中,document.formName.item("itemName")这样的语句可以正确执行,但是在Firefox中却不能运行。解决方法是使用document.formName.elements["elementName"]来代替。 2. Window.Event 问题 在IE中,window.event...
- 对于`document.form.item`的问题,IE支持`document.formName.item("itemName")`,而MF则需要使用`document.formName.elements["elementName"]`。 - 集合类对象的取用,IE允许使用圆括号,如`document.forms("form...
获取表单(form)对象时,直接通过`document.forms("formName")`的方式可以在IE中正常使用,但在FF中无法识别。 **解决方法:** 改用下标运算的方式获取表单对象,即`document.forms["formName"]`。 **备注:** 此...
- IE支持`document.all.month.value`,但Firefox要求使用`document.getElementsByName("month")[0].value`或`document.getElementById("month").value`。推荐使用`getElementById`以保持兼容性。 6. HTML对象ID...
IE 和 Firefox 处理 form 表单的方式不同,IE 可以使用 `document.formName.item("itemName")` 或 `document.formName.elements["elementName"]`,而 Firefox 只能使用 `document.formName.elements["elementName"]`...
- IE支持`document.formName.item("itemName")`和`document.formName.elements["elementName"]`,而Firefox只支持后者。建议统一使用`document.formName.elements["elementName"]`。 11. 集合类对象获取: - IE...
比如在获取表单元素时,IE支持document.formName.item("itemName"),而Firefox只支持document.formName.elements["elementName"]。因此,为了兼容性,统一使用document.formName.elements["elementName"]更为稳妥。 ...
页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)> 打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)> ``` 这段代码允许用户通过按钮触发打印、直接打印、页面设置和打印预览等功能。然而,这种方法的...
IE允许使用`document.formName.item("itemName")`或`document.formName.elements["elementName"]`来访问表单元素,而Firefox只支持后者。 #### 10. 集合类对象访问 IE支持使用圆括号`()`或方括号`[]`来访问集合类...
例如,`document.getElementById()`在所有浏览器中都可用,但`document.all`是IE特有的,而其他浏览器可能需要使用`document.querySelector()`或`document.getElementsByTagName()`。 3. **const声明问题**:`const...
在描述中提到的"IHTMLDocument2问题代码"可能指的是开发者在使用这个接口时遇到的问题。这可能包括但不限于以下几种情况: 1. **类型转换错误**:由于`IHTMLDocument2`是基于COM(Component Object Model)的,因此...
- **IE**: 使用 `document.formName.item("itemName")` 访问表单元素。 - **Firefox (FF)**: 使用 `document.formName.elements["elementName"]` 访问表单元素。 2. **通过名称获取表单元素** - **IE**: 可以...
对象绑定事件 document.all.xxx.detachEvent("onclick",a); 插件数目 navigator.plugins 取变量类型 typeof($js_libpath) == "undefined" 下拉框 下拉框.options[索引] 下拉框.options.length 查找对象 ...
1. **安全性**:直接操作IE窗口可能会涉及到安全问题,特别是在处理用户敏感信息时。 2. **兼容性**:随着浏览器版本的更新,某些特性可能会发生变化,因此需要持续关注API的更新情况。 3. **性能**:自动化操作可能...
例如,IE浏览器通常使用`document.all`,而其他现代浏览器如Firefox、Chrome和Safari则倾向于使用`document.getElementById`或`document.querySelector`。 `const`问题涉及到变量声明的不变性。在ES6中引入的`const...
dropmenuobj: null, ie: document.all, firefox: document.getElementById&&!document.all, previousmenuitem:null, currentpageurl: window.location.href.replace("http://"+window.location.hostname, "")....
本文将围绕Firefox浏览器与Internet Explorer(简称IE)之间关于JavaScript脚本的兼容性差异进行详细探讨,并通过具体的示例来帮助开发者更好地理解和解决实际开发过程中遇到的问题。 #### 二、关键知识点详解 ###...