如何访问IE上<iframe>中加载的纯文本?</iframe>

时间:2010-08-24 07:27:20

标签: javascript dom iframe

我有一个<iframe>,其src指向纯文本文件(不是HTML)。文本被加载并显示在屏幕上,但似乎隐藏在JavaScript中。

在其他浏览器中,iframe.contentWindow.document.body.innerText足以为您提供,但在这种情况下IE会返回一个空字符串。

IE是否可以在不涉及服务器的情况下访问文件内的文本?

4 个答案:

答案 0 :(得分:1)

您可以使用XmlHttpRequest读取此文件。如果浏览器可以读取它,那么XmlHttpRequest也可以读取它。

/* Read a file  using xmlhttprequest 

If the HTML file with your javascript app has been saved to disk, 
this is an easy way to read in a data file.  Writing out is 
more complicated and requires either an ActiveX object (IE) 
or XPCOM (Mozilla).

fname - relative path to the file
callback - function to call with file text
*/
function readFileHttp(fname, callback) {
   xmlhttp = getXmlHttp();
   xmlhttp.onreadystatechange = function() {
      if (xmlhttp.readyState==4) { 
          callback(xmlhttp.responseText); 
      }
   }
   xmlhttp.open("GET", fname, true);
   xmlhttp.send(null);
}

/*
Return a cross-browser xmlhttp request object
*/
function getXmlHttp() {
   if (window.XMLHttpRequest) {
      xmlhttp=new XMLHttpRequest();
   } else if (window.ActiveXObject) {
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
   if (xmlhttp == null) {
      alert("Your browser does not support XMLHTTP.");
   }
   return xmlhttp;
}

使用readFileHttp(fname, callback)参数为iframe.src属性调用fname。 回调参数应该是一个函数,可以根据需要对结果执行任何操作。

这样的事情:

var myIFrame = document.getElementById('iframeIdGoesHere');
readFileHttp(myIFrame.src, function(result){
    //process the result
});

答案 1 :(得分:0)

只是在黑暗中拍摄,但你尝试了innerHTML属性吗?

或者,更“正确”的方法是直接使用XMLHttpRequest请求文件。

答案 2 :(得分:0)

根据评论和编辑进行编辑:

可能是body在文档中不可用作js属性。你可以尝试:

iframe.contentWindow.document.getElementsByTagName('body')[0].innerText 
  • 我原来的回答(由于评论而仅作为参考):
      

    你   在评论中说你拉   来自<input type='file' />的路径。   您可以使用它来上传文件   服务器,然后使用它来读取它   简单的文件阅读机制。 (后   所有,<input type='file' />是   用于服务器上传......)

答案 3 :(得分:0)

window.frames[0].document.getElementsByTagName("body")[0].innerHTML