2017-02-24 6 views
0

Ich muss den Inhalt einer TXT-Datei auf einer Webseite verwenden. Das Problem ist, dass ich es nicht leicht machen kann (serverseitiges PHP). Ich habe den Trick herausgefunden, eine Textdatei im iframe zu öffnen und nach innerHTML/innerText zu fragen. Es stellt sich heraus, dass die Leute zuvor waren - den folgenden Code, viel sauberer als meine Versuche gefunden, unter https://zipcon.net/~swhite/docs/computers/browsers/extern_via_iframe.htmlIframe-Inhalt lesen funktioniert nicht unter Chrome

Es funktioniert lokal unter FireFox und IE, aber nicht unter Chrome. Wie funktioniert es unter Chrome? mit chrome.exe --user-data-dir="." --disable-web-security

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

Versuchen Sie, einen domainübergreifenden Iframe oder einen Iframe mit derselben Domäne zu lesen? Wenn Sie versuchen, domänenübergreifend zu arbeiten, hält Sie die Richtlinie für einzelne Herkunft davon ab. –

+0

gleiche Domäne. Um es genauer zu sagen, ich teste es auf einem Desktop, ohne Dateien auf den Server zu laden. –

Antwort

0

Dies liegt daran, iFrames in dh Handhabung und firefox ist differentthan Chrom, wegen chromes Same Origin Policy
den Browser starten und Sie müssen warten, bis das Dokument vollständig zu laden, dh alle Inhalte der Seite, kann es passieren, da iFrame (für generische Lösung) innerhalb iFrame sein kann

$(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) 
       } 
     } 
` 

es Griffe sowohl für Rahmen und iFrame (rekursiv). $(window).load jquery benötigt

Verwandte Themen