Ankündigung

Einklappen
Keine Ankündigung bisher.

[JavaScript] jQuery: Inhalt aus Frame holen

Einklappen

Neue Werbung 2019

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
    --gelöscht, vermutlich falsch--

    Kommentar


    • #3
      schade! dachte schon!
      Hier nochmal ein kleiner Test zum rauskopieren - nur noch eine jquery-datei reinkopieren!
      Ich bekomme als Ergebnis "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


      • #4
        Du wirst vermutlich auf iframeobject.contentWindow.document.body zugreifen müssen.

        Kommentar


        • #5
          hey, ist kein iframe und wozu nutze ich denn jquery. Laut jQuery-Doku sollte es so funktionieren! In der Doku geht es zwar um ein iframe, aber ich denke es wird keine unterschiede zwischen iframes und frames geben!

          Kommentar


          • #6
            frameset und body in einem html.document? Was die Browser nicht alles zulassen....
            Und ob jquery oder nicht, Du brauchst contentWindow, da contents() das nicht mit einschließt.

            Kommentar


            • #7
              Hmm, wie sollte das deiner Meinung nach aussehen?

              Kommentar


              • #8
                Wenn ich z.B. mein Frame mal normal über JS anspreche komm ich nicht weiter als:

                document.getElementById('frame').contentWindow

                sobald ich

                document.getElementById('frame').contentWindow.doc ument

                mache, kommt js-fehler! Warum?

                Kommentar


                • #9
                  Frames werden über frames (wer hätts gedacht) angesprochen, eine spezielle Form des window-Objekts. Weiter gehts dann mit document. Steht alles bei selfhtml. Wenn der Frame-Inhalt nicht auf dem selben Server liegt, kannst Du Dir den ganzen Plan übrigens gleich abschmatzen.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar


                  • #10
                    Und jag mal Deine Seite durch The W3C Markup Validation Service

                    Kommentar


                    • #11
                      ein frame ist genau wie jedes andere element ein objekt. also muss ich es nicht mit "frames." ansprechen! Warum sollte ich mir das abschmatzen? Wir reden hier nicht von eine httprequest, sondern nur um den inhalt eines frames! und wo der herkommt, sollte egal sein.
                      Mir wäre neu, das die herkunft eine rolle spielen sollte! davon abgesehen, liegt mein testseite mit auf meinem server, und es geht auch nicht!

                      Oder belehrt mich eines besseren!?

                      Der Validator ist mir beim rum testen relativ schnuppe! Sorry aber um diese meinungen hab ich nicht gebeten! Meine seiten sind eigentlich immer valid...

                      Kommentar


                      • #12
                        ein frame ist genau wie jedes andere element ein objekt
                        Ja. Ein window Objekt mit einem eigenen HTTP-Request! Faktisch nicht anders als ein Popup. Was denkst Du denn, wo der Inhalt herkommt?
                        Sorry aber um diese meinungen hab ich nicht gebeten!
                        Dann komm hinterher nicht angesch... wenns nicht geht. Meine Güte!

                        SELFHTML: JavaScript / Objektreferenz / frames
                        Same Origin Policy – Wikipedia
                        --

                        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                        --

                        Kommentar


                        • #13
                          Zitat von Frank Burian Beitrag anzeigen
                          Der Validator ist mir beim rum testen relativ schnuppe! Sorry aber um diese meinungen hab ich nicht gebeten! Meine seiten sind eigentlich immer valid...
                          Du hast entweder ein <frameset> oder ein <body> in Deinem validen HTML Dokument, nicht beides.
                          Wenn dann etwas seltsames passiert, Test hin oder her, brauchst Du Dich nicht wundern.

                          Kommentar


                          • #14
                            Du führst die Funktion schon vor dem eigentlichem HTML auf. Woher soll jQuery also wissen was #frame ist, wenn es erst später definiert ist?

                            Setzt den JS Code mal unter den HTML Code.

                            Kommentar


                            • #15
                              Zitat von stayInside Beitrag anzeigen
                              Du führst die Funktion schon vor dem eigentlichem HTML auf. Woher soll jQuery also wissen was #frame ist, wenn es erst später definiert ist?
                              Doch doch, das kann jQuery im Prinzip. Zum Beispiel:
                              Code:
                              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de-de" lang="de-de" >
                                <head>
                                  <script src="jquery-1.2.6.js"></script>
                                  <script>
                                    $("#foo").ready( function() { $("#foo").append("xyz") } );
                                  </script>
                                </head>
                                <body>
                                  <div id="foo">abc</div>
                                </body>
                              </html>

                              Kommentar

                              Lädt...
                              X