Koalo: HTML-Inhalt auslesen

Hi,
Gibt es eine Möglichkeit den Inhalt der selben HTML-Datei auszulesen und in eine Variable zu packen?
Beispiel:

<html>
<head>
<script>
function melde(){alert([?Eigenschaft von Inhalt?])}
</script>
</head>
<body>
<a href="javascript:melde()">Hallo du da!</a>
</body>
</html>

Gemeldet wird:

<html>
<head>
<script>
function melde(){alert([?Eigenschaft von Inhalt?])}
</script>
</head>
<body>
<a href="javascript:melde()">Hallo du da!</a>
</body>
</html>

Koalo

P.S.: Ich bin eigentlich ziemlich sicher, dass, wenn es geht, es auch in Selfhtml oder im Forum steht.
Doch ich hab' es nicht gefunden!

  1. Hallo, Koalo,

    Gibt es eine Möglichkeit den Inhalt der selben HTML-Datei auszulesen und in eine Variable zu packen?
    Beispiel: [...]
    Gemeldet wird: [...]

    Häh? Was soll denn nun gemeldet werden? Der komplette HTML-Quellcode innerhalb des body-Elements, oder was meinst du mit "Inhalt"...?

    Meintest du vielleicht folgendes:
    <html>
    <head>
    <script>
    function melde(){alert(document.getElementById('text').firstChild.data)}
    </script>
    </head>
    <body>
    <a href="javascript:melde()" id="text">Hallo du da!</a>
    </body>
    </html>

    Damit wird der Inhalt des a-Elementes ausgegeben ("Hallo du da!"), vorausgesetzt es enthält keine weiteren Elemente.
    Ich glaube, du suchtest http://selfhtml.teamone.de/dhtml/modelle/dom.htm, http://selfhtml.teamone.de/javascript/objekte/node.htm und http://selfhtml.teamone.de/javascript/objekte/document.htm (Methoden getElement(s)ById/Name/TagName).

    Mathias

  2. Hallo nochmal,

    Gemeldet wird: [...]

    Falls das "gemeldet werden soll" heißen soll, ist vielleicht folgende Seite für dich hilfreich: http://home.t-online.de/home/dj5nu/js-dom-nodelisting.html.
    Man könnte das Skript umschreiben, sodass es alle Elemente und Kindknoten einliest und als HTML-Code ausgibt.

    Grüße,
    Mathias

    1. Hallo nochmal,

      Man könnte das Skript umschreiben, sodass es alle Elemente und Kindknoten einliest und als HTML-Code ausgibt.

      ...genau das habe ich mal gemacht, und heraus kam das:

      <?xml version="1.0" encoding="ISO-8859-1" ?>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
      <!-- (K) ALL RIGHTS REVERSED - Reprint what you like -->
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
      <title>JavaScript/DOM: Rekursive Auflistung aller Kindknoten</title>
      <script type="text/javascript">
      //<![CDATA[
      // by Mathias Schaefer (molily@gmx.de), licensed under
      // GNU General Public License (http://www.gnu.org/copyleft/gpl.txt)

      var ausgabe='';

      function liste_unterknoten (knoten) {
       if (knoten.nodeName=='#text') {
        ausgabe+=knoten.nodeValue;
       } else {
        if (knoten.nodeName=='#comment') {
         ausgabe+='<!--'+knoten.nodeValue+'-->';
        } else {
         ausgabe+='<'+knoten.nodeName;
         if (knoten.attributes.length)
          for (k=0; k<knoten.attributes.length; k++)
           ausgabe+=' '+knoten.attributes[k].nodeName+'="'+knoten.attributes[k].nodeValue+'"';
         if (knoten.hasChildNodes()) {
          ausgabe+='>';
          for (var i=0; i<knoten.childNodes.length; i++) {
           knotenneu=knoten.childNodes[i];
           liste_unterknoten(knotenneu); // Rekursion
          }
          ausgabe+='</'+knoten.nodeName+'>';
         } else {
          ausgabe+=' />';
         }
        }
       }
      }
      //]]>
      </script>
      </head>
      <body>

      <!-- Beispieldokument (dieser Kommentar ist auch ein Unterknoten) -->

      <h1>JavaScript/<abbr title="Document Object Model">DOM</abbr>: Rekursive Auflistung aller Kindknoten</h1>

      <h2 title="Testattributwert">Testüberschrift</h2>

      <script type="text/javascript">
      //<![CDATA[
      liste_unterknoten(document.getElementsByTagName('html')[0]);
      document.write('<pre>'+ausgabe+'</pre>');
      //]]>
      </script>

      </body>
      </html>

      Der Quellcode wird recht genau wiedergegeben, nur die Zeilenumbrüche werden verfälscht, mag auch an der Datei liegen. Getestet mit Mozilla 1.1.
      Kommentare erwünscht. :)

      Mathias