Daten aus iframe abrufen

Lesezeit: 4 Minuten

Benutzer-Avatar
Deck John

Ich mache das zum ersten Mal. Ich habe eine erstellt iframe auf meiner Seite und ich möchte den Text von der iframe durch jquery. Hier ist mein Code:

<html>
  <head><script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

    <script type="text/javascript">
    function copyIframeContent(iframe){  
        var iframeContent = $(iframe).contents(); //alert(iframeContent);
        //$("#result").text("Hello World");
        $("#result").html(iframeContent.find('body').html);alert(iframeContent.find('body').html());
    }
    </script>
  </head>
  <body>
    <iframe id="myIframe" onload="copyIframeContent(this);" name="myIframe" src="text.php"></iframe><br />
    Result:<br />
    <textarea id='result'></textarea>
    <input type="button" value="click" id="btn" onclick="aa()">
    <script type="text/javascript">
         function aa(){  alert("Fdf");
            alert(document.getElementById('myIframe').contentWindow.document.body.innerHTML);
    }
    </script>
  </body>
</html>

text.php:

text to change

Ich habe viel in allen Browsern versucht, aber das funktioniert immer noch nicht. Kann mir jemand helfen, diesen Inhalt zu bekommen?

  • Ja, es ist dieselbe Seite und im selben Verzeichnis

    – Deck John

    16. Mai 2013 um 13:54 Uhr

  • “funktioniert aber immer noch nicht” Ich frage mich nur, was das bedeutet? Bitte erläutern Sie uns, indem Sie uns eine Fehlermeldung geben, falls vorhanden

    – A. Wolff

    16. Mai 2013 um 13:54 Uhr


  • Ich habe hier meinen gesamten Code kopiert / eingefügt, aber es funktioniert jetzt immer noch, weiß nicht warum. in Alarmbereitschaft zeigt es mir [ObectObject]

    – Deck John

    16. Mai 2013 um 13:55 Uhr

  • Verwenden Sie keine Warnung, verwenden Sie console.log() und prüfen Sie das Objekt

    – A. Wolff

    16. Mai 2013 um 13:56 Uhr

  • Es zeigt mir diesen Fehler “Berechtigung zum Zugriff auf die Eigenschaft “Dokument” verweigert” in der Konsole

    – Deck John

    16. Mai 2013 um 13:58 Uhr

Verwenden .Inhalt() um zum DOM von iFrame zu gelangen.

$('#myIframe').contents()

AKTUALISIEREN:

Im OP:

$("#result").html(iframeContent.find('body').html);

Sollte sagen:

$("#result").html(iframeContent.find('body').html());

  • Es funktioniert jetzt. Ich alarmiere dies und bekomme “[obect Object]” im Alarmfeld

    – Deck John

    16. Mai 2013 um 14:05 Uhr

  • $('#myIframe').contents().find('body').html() zu? .contents() allein gibt jQuery zurück.

    – Petr Vostrel

    16. Mai 2013 um 14:07 Uhr

  • “funktioniert nicht” ist zu wenig Beschreibung, fürchte ich. Hast du es versucht console.log dies statt alert? Dann können Sie tatsächlich in das zurückgegebene Objekt hineinsehen und sehen, was was ist. Übrigens. keine Sicherheitsfehler in der Konsole?

    – Petr Vostrel

    18. Mai 2013 um 10:28 Uhr


Benutzer-Avatar
John b

Das contentWindow funktioniert sowohl in FF als auch in Chrome

document.getElementById('myFrame').contentWindow.document.body    

Würde Ihnen einen DOM-Elementkörper geben

Sie können auch etwas wie versuchen

 window.frames['myIframe'].document.body    

Das könnte auch für Sie der Trick sein

Möglicherweise haben Sie Probleme mit der integrierten Sicherheit Ihres Browsers. Wenn Sie dies auf einem lokalen Computer ausführen. Es gibt eine Möglichkeit, die Browsersicherheit zu deaktivieren.

  • Zuerst warte ich den Text aus dem Text aus dem Iframe und dann möchte ich ihn durch mein div (Ergebnis) ersetzen

    – Deck John

    16. Mai 2013 um 14:15 Uhr

  • (document.getElementById(‘myFrame’).contentWindow.document.body).appendchild(div(result)) w3schools.com/dom/met_element_appendchild.asp

    – Johannes b

    16. Mai 2013 um 14:25 Uhr


Benutzer-Avatar
Sudhakar Singajogi

var content=$("iframe").contents().find('body').html();

alert(content);

  • Hiya, das könnte das Problem gut lösen … aber es wäre gut, wenn Sie könnten Bearbeiten Sie Ihre Antwort und geben Sie eine kleine Erklärung darüber, wie und warum es funktioniert 🙂 Vergessen Sie nicht – es gibt jede Menge Neulinge auf Stack overflow, und sie könnten ein oder zwei Dinge von Ihrem Fachwissen lernen – was für Sie offensichtlich ist, ist es möglicherweise nicht für sie.

    – Taryn Osten

    19. November 2014 um 5:35 Uhr

Benutzer-Avatar
Higarisch

Mit jquery wird es etwas einfacher:

$('Your Selector', frames['myIframe'].document)

Das obige Beispiel bekommt nichts ab meinIframe. Aber der Iframe MUSS von derselben Domäne sein wie das übergeordnete Dokument. Wenn Sie nicht von derselben Domäne stammen, tritt eine Sicherheitsverletzung auf (Sie können Ihrer Seite keine Inhalte von fremden Websites hinzufügen und diese Inhalte ändern).

Wenn keine Sicherheitsverletzung vorliegt, können Sie mit der Auswahl nichts anfangen. Beispielsweise können Sie die Methode jquery append() verwenden, um neues HTML in den iFrame einzufügen, Sie können die Methode html() verwenden, um HTML oder jede andere Funktion zu ersetzen, die jquery/pure Javascript zulässt.

1016240cookie-checkDaten aus iframe abrufen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy