2017-02-24 37 views
0

ウェブページで.txtファイルのコンテンツを使用する必要があります。問題は私が簡単に(サーバー側のPHP)行うことができないということです。私はiframeでテキストファイルを開いてinnerHTML/innerTextを要求するトリックを見つけました。人々が以前にあったことが判明 - 私の試みよりもはるかにクリーンな次のコードが見つかりました。https://zipcon.net/~swhite/docs/computers/browsers/extern_via_iframe.htmlChromeでiframeのコンテンツを読むことができません

これは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

クロスドメインのiframeまたは同じドメインのiframeを読み込もうとしていますか?それをクロスドメイン化しようとしているのであれば、単一のオリジンポリシーはあなたがそうしないようにしています。 –

+0

同一ドメイン。より正確には、ファイルをサーバーにロードせずに、デスクトップ上でテストしています。 –

答えて

0

IEでのiFrameを処理し、Firefoxはdifferentthanクロムである、なぜならクローム同一生成元ポリシーの
するchrome.exe --user-data-dir="." --disable-web-security

を使用してブラウザを起動して、あなたは完全にすなわちロードするために文書を待つ必要が ためですページのすべての内容は、

$(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(再帰的に)両方のハンドル(汎用ソリューション用)iFrameの内部のiFrameがあるかもしれない起こるかもしれません。このため$(window).load jqueryが必要です

関連する問題