我有一个<iframe>
,其src
指向纯文本文件(不是HTML)。文本被加载并显示在屏幕上,但似乎隐藏在JavaScript中。
在其他浏览器中,iframe.contentWindow.document.body.innerText
足以为您提供,但在这种情况下IE会返回一个空字符串。
IE是否可以在不涉及服务器的情况下访问文件内的文本?
答案 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