我想在IE9中上传文件,我使用了form和iframe。这是我的HTML代码:
<iframe name="ie9Iframe" ref="iframe" src="" width="0" height="0"></iframe>
<form ref="uploadForm" target="ie9Iframe" action="/pages/upload" method="post" enctype="multipart/form-data">
<input class="fileChoose" type="file" name="upload_file" @change="fileChanged" id="file"/>
<input type="submit" value="提交" id="fileSubmit"/>
</form>
这是我绑定onload事件的js:
var iframe = document.getElementsByName('ie9Iframe')[0];
console.log(iframe.toString());
if(iframe.attachEvent) {
console.log('attachevent')
iframe.attachEvent('onload', function () {
console.log(11111111111111)
var responseText = iframe.contentDocument.body.textContent;
console.log(responseText)
if(responseText == '') {
return;
}
var responseData = JSON.parse(responseText) || {};
console.log(22222222222222222222)
console.log(JSON.stringify(responseData))
if(responseData.status == 1) {
this.fileId = responseData.protocol.file_id;
}
})
}else {
console.log('notAttachevent')
}
这是我的控制台日志:
日志: [object HTMLIFrameElement]
日志: attachevent
日志: 11111111111111
日志:
当我提交表单时,它会返回一些json数据,但iframe onload事件没有被调用,所以我无法获取数据。我尝试了很多方法但是没有用。任何建议或评论都会很棒..谢谢!
答案 0 :(得分:0)
onload
事件已执行(您111111111
块代码中包含onload
日志。您的脚本问题是获取iframe内容的代码。
请改为尝试:
var responseText = iframe.document.body.textContent;
您应该在Internet Explorer上以稍微不同的方式获取iframe文本内容。请检查以下link。