最近在做一个上传文件的组件!因此要用JS生成页面元素!首先在FF先测试时没有问题的~但是在IE下测试的时候就出现问题了:在IE下生成元素时是不能为其设置name属性的!这样就导致了某些元素间目标指定不明确了!例如我要把form的target指定iframe时,由于在IE下不能成功设置iframe的name属性(已设ID)!从而导致新开页面提交刷新的问题出现!
那么,应该怎么解决呢?在网上一番搜索后得到的结论是:IE支持三种设置name属性的方法,FF支持一种设置name属性的方法!让我们来看看吧:
IE:1 、document.createElement("<input type=text>")
2、 document.createElement("<input>")
3、 document.createElement("input")
FF: document.createElement("input");document.setAttribute(name,value);
或者 var form=document.createElement("input");document.setAttribute("form");
form.name="form1";( IE不支持此方法设name属性)
IE:
1、 node.insertBefore(Element)
2、 node.insertAfter(Element)
3 、node.appendChild(Element)
FF:1、 node.appendChild()
当解决了这个创建元素问题后,还有个问题就是IE和FF上传文件是form的编码认识是存在差异的,也就是说IE下传到服务端的ContentType仍然是:"application/x-www-form-urlencoded”!所以我们就应该判断浏览器的类型设置不同的编码!
IE: form.encoding = "multipart/form-data"
FF: form.enctype = "multipart/form-data";
这样就能解决文件上传编码问题了!
那么,应该怎么解决呢?在网上一番搜索后得到的结论是:IE支持三种设置name属性的方法,FF支持一种设置name属性的方法!让我们来看看吧:
IE:1 、document.createElement("<input type=text>")
2、 document.createElement("<input>")
3、 document.createElement("input")
FF: document.createElement("input");document.setAttribute(name,value);
或者 var form=document.createElement("input");document.setAttribute("form");
form.name="form1";( IE不支持此方法设name属性)
IE:
1、 node.insertBefore(Element)
2、 node.insertAfter(Element)
3 、node.appendChild(Element)
FF:1、 node.appendChild()
当解决了这个创建元素问题后,还有个问题就是IE和FF上传文件是form的编码认识是存在差异的,也就是说IE下传到服务端的ContentType仍然是:"application/x-www-form-urlencoded”!所以我们就应该判断浏览器的类型设置不同的编码!
IE: form.encoding = "multipart/form-data"
FF: form.enctype = "multipart/form-data";
这样就能解决文件上传编码问题了!