[JavaScript] jQuery: Inhalt aus Frame holen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] jQuery: Inhalt aus Frame holen

    Hallo,

    bin grad bissl am verzweifeln.

    Ich hab eine HTML-Datei (index.htm) in der sich ein normaler Frame befindet. In den Frame lade ich ein Datei (inhalt.htm) hinein.

    In der index.htm hab ich ein Javascript welches nach erfolgreichem Laden der inhalt.htm, dessen HTML-Inhalt zwischen dem Body-Tag auslesen soll. Aber: Es funktioniert nicht. Aber warum?

    Mein Script in der index.htm sieht so aus:
    Code:
    <script type="text/javascript">
    $("#frame0").load(function() {
            // Wenn inhalt.htm geladen ist...
    	modifyContent($("#frame0"));
    });
    
    function modifyContent(element) {
    	// alert($(element).attr('src'));
    	alert($(element).contents().find("body").html());
    }
    </script>
    Was ist da falsch? wenn ich den Kommentar bei dem ersten alert(...) wegnehmen, bekomm ich den Link-Pfad den ich im Frame geladen habe. Also sprech ich den Frame bis dahin auch richtig an!

    Laut jQuery-Doku muss das auslesen des Inhalt auch gehen!

    Danke!

  • #2
    Kann mir keiner helfen? Hier nochmal eine zusammengefasster Code zum Test:
    Ich bekomm "null" zurück, warum?
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="jquery.js"></script>
    <script type="text/javascript">
    $(function() {
    	showFrame();
    });
    
    function showFrame() {
    	$("#frame").attr("src","http://www.google.de");
    	$("#frame").load(function() {
    		$("#frame").css("display","block");
    		//alert($("#frame").attr('src'));
    		alert($("#frame").contents().find("body").html());
    	});
    }
    </script>
    </head>
    <frameset rows="100%">
    <frame src="" name="frame" id="frame" style="display:none;">
    </frameset>
    </html>

    Kommentar


    • #3
      Probier doch mal statt .load ein .ready ... ansonsten sehe ich da jetzt spontan keinen Fehler, kannst halt höchstes mal Stückchenweise ein alert() machen, ggf. gibt er vorher schon irgendwo NULL zurück, so kannst du das Problem wenigstens eingrenzen.

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        mit ready hatte ich auch schon versucht - ändert nichts. Ich hatte das mal kurz mit einem iframe probiert und hat und habe mit .append() dem Body ein Text hinzugefügt. Ich hab ihn ganz kurz gesehen, und dann war er weg als die Seite angezeigt wurde. Also, funktioniert das Load irgendwie nicht so wie es sollte. das erklärt auch wenn ich "leer" zurück bekomm. allerdings hab ich das mal mit settimeout() etwas weiter hinausgeschoben, da kam aber das gleiche ergebnis, obwohl die seite schon da war!

        Kommentar


        • #5
          Ohne

          PHP-Code:
          $(document).ready(function() { ...} 
          ... wird das nicht funktionieren. Habe einiges an Zeit investiert, bis ich das gemerkt hatte ...
          Zuletzt geändert von php_fussel; 25.01.2009, 10:20.

          Kommentar


          • #6
            Ja und ging es dann danach? Bei mir nicht! Die Seite in dem Frame sollte aber auch extern sein!

            Aber wie es aussieht wird es aus sicherheitsgründen nicht funktionieren! oder?

            Kommentar


            • #7
              Jop, das funktioniert wegen der same origin policy leider nicht.

              Kommentar


              • #8
                Man sollte die Frage besser lesen ... mit dem iframe habe ich gerade erst gesehen ... ! Dann dürfte die Antwort von jmc greifen ...

                Gruß php_fussel

                Kommentar

                Lädt...
                X