在IE

时间:2018-04-09 07:45:20

标签: javascript file internet-explorer

我想在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事件没有被调用,所以我无法获取数据。我尝试了很多方法但是没有用。任何建议或评论都会很棒..谢谢!

1 个答案:

答案 0 :(得分:0)

onload事件已执行(您111111111块代码中包含onload日志。您的脚本问题是获取iframe内容的代码。

请改为尝试:

var responseText = iframe.document.body.textContent;

您应该在Internet Explorer上以稍微不同的方式获取iframe文本内容。请检查以下link