动态创建元素上传文件

不用xhr, 就要动态创建iframe 和 form 表单, 不做特殊处理form.submit() 在 ie6 会遇到 “htmlfile 无法打开”

1. iframe 的domain 要跟当前页面的domain 相同, 可以用脚本给iframe 添加domain
iframe.src = ‘javascript:document.open();document.domain=\”+config.domain+’\’;document.close();’;

2. 某些ie6版本的submit 还是有问题 setTimeout(function(){ form.submit();} , 0 ); 可以解决

3. iframe create Element 的时候不太name 创建是设置不了name 的, 记得ie 用 document.createElement(‘‘);

4. 设置 ie 的enctype form.encoding = ‘multipart/form-data’;

5. 用新创建的file node 替代原来file input 的位置, 将原来的file 用于提交表单
var file_new = file.cloneNode(true);
file.parentNode.insertBefore(file_new, file);
file.id = ”; // 清除这个id, 避免用id取不到file_new
file.style.display = ‘none’;
form.appendChild(file);

简单交代一下, 都是跟damon 同学学来的, 坐等damon 的详细分享。

Tags

发表评论

电子邮件地址不会被公开。 必填项已用*标注