我需要在网页上使用.txt文件的内容。问题是我无法轻松实现(服务器端php)。我想出了在iframe中打开文本文件然后要求innerHTML / innerText的技巧。事实证明以前有人在那里 - 发现以下代码,比我的尝试更清晰,https://zipcon.net/~swhite/docs/computers/browsers/extern_via_iframe.html
它在FireFox和IE下本地运行,但不在Chrome下。如何让它在Chrome下运行?
function getIframeContentText( frameID )
{
var elt = document.getElementById(frameID);
//alert( "getIframeContentText:" + elt );
//alert( "getIframeContentText Content:" + elt.contentDocument );
if( elt.contentDocument ) // DOM
{
var iframe_doc = elt.contentDocument;
var range = iframe_doc.createRange();
range.selectNodeContents( iframe_doc.body );
return range.toString();
}
else // IE6
{
var iframe_doc = document.all[frameID].contentWindow.document;
//return iframe_doc.body.innerHTML; // gets HTML
return iframe_doc.body.outerText;
}
}
答案 0 :(得分:0)
这是因为处理ie和firefox中的iFrames与chrome不同,因为chromes同源策略
使用chrome.exe --user-data-dir="." --disable-web-security
并且您必须等待文档完全加载,即页面的所有内容,可能会发生iFrame内部的iFrame(通用解决方案)
$(window).load(function()
{
chromeFrameInitializers(document);//for handling frames and IFrames
});
function chromeFrameInitializers(document)
{
var frame=document.getElementsByTagName("frame");
for(var i=0;i<frame.length;i++)
{
var subDocFrame=frame[i].contentDocument;
//do your stuf
chromeFrameInitializers(subDocFrame)
}
var iFrame=document.getElementsByTagName("iFrame");
for(var i=0;i<iFrame.length;i++)
{
var subDocIFrame=iFrame[i].contentDocument;
//do your stuf
chromeFrameInitializers(subDocIFrame)
}
}
`
它处理帧和iFrame(递归)。为此$(window).load
需要jquery