Seite 1 von 1

[JS] JavaScript in mit JS geladene Seite ausführen [gelöst]

Verfasst: 05.05.2009 13:09
von Programie
Hi,

Ich möchte in einer Seite, die über JavaScript geladen wird (Mit XMLHttpRequest()) JavaScript ausführen lassen. Also der JavaScript-Code in der von JavaScript geladenen Seite soll ausgeführt werden.
Wenn ich einfach den JavaScript zwischen die Script-Html-Tags schreibe, wird der Code nicht ausgeführt.
Beispiel:

Code: Alles auswählen

<script type=text/html">
 alert("Das ist ein Test");
</script>
Ich hoffe ihr versteht wie ich das meine. ;)

Verfasst: 05.05.2009 14:02
von TomS
Es muss auf jeden Fall heißen

Code: Alles auswählen

<script type="javascript">
 alert("Das ist ein Test");
</script>
Ein Text-Script führt natürlich keinen JS-Code aus. Desweiteren hast du das erste Doublequote vergessen.

Verfasst: 05.05.2009 16:37
von Programie
TomS hat geschrieben:Es muss auf jeden Fall heißen

Code: Alles auswählen

<script type="javascript">
 alert("Das ist ein Test");
</script>
Ein Text-Script führt natürlich keinen JS-Code aus. Desweiteren hast du das erste Doublequote vergessen.
Oh falsch geschrieben.

Ich meinte natürlich type="text/javascript". :lol:
Den Code habe ich ja nur hier im Forum ungetestet zusammengecodet. ;)
Aber so habe habe ich es auch in meinem Code gemacht (Natürlich ohne die Fehler). Aber es funktioniert nicht: Der Code wird nicht ausgeführt. :(

Verfasst: 05.05.2009 16:53
von bobobo
es kommt hier vermutlich mal drauf WANN (und wO) der javascript-code
geladen und WANN der geladene javascript-code ausgeführt wird.

Verfasst: 05.05.2009 16:55
von TomS
Vielleicht ist auch die ausführende Seite falsch.

Ich bin ja jetzt wirklich kein Javascript-Freak, aber es kommt doch eher selten vor, dass man einfach eine Funktion aufruft.

Vielleicht muss die Ausgabe noch noch mit document.write ausgegeben werden.

Was gibt denn XMLHttpRequest() zurück?

EDIT: Schau mal hier: http://de.wikipedia.org/wiki/XMLHttpRequest

Verfasst: 05.05.2009 17:02
von Programie
Also der JS-Code soll ausgeführt werden, wenn die Seite geladen wird.


Beispiel:

Seite wird geladen.
JavaScript läd den Inhalt der Seite, welcher auch JavaScript enthält.
JavaScript vom Inhalt wird ausgeführt und der Inhalt der Seite wird dargestellt.


Es geht hier mal wieder um meine neue Homepage. ;)
Zum Beispiel auf der Serverseite sind die Server aufgelistet, die auf meinem Server gehostet sind. Die Liste soll sich jedoch immer mal wieder selbstständig aktualisieren. Und dafür möchte ich nicht den ganzen Inhalt neuladen, sondern nur den Inhalt der Tabelle (Servername, Ping, Port, Slots, ..., Online/Offline). Und das geht eben nur, wenn auf der Seite auch JavaScript ausgeführt wird.
JavaScript bei Events wie onclick kann ausgeführt werden.


Ich hoffe, ihr versteht nun, wie ich es machen möchte. ;)

Zum selbst Nachsehen wie der Quellcode aussieht: Beta meiner Homepage

Verfasst: 05.05.2009 17:58
von Kukulkan
Hi,

Ich hatte das selbe Thema und habe es über eval() gelöst:

JavaScript:

Code: Alles auswählen

function StartJS(HTMLCode) {
  // parse HTML code for valid JavaScript code and start
  // this code using eval().
  // JavaScript code needs to start with "<script"and needs to
  // end using "</script>".
  HTMLCodeSmall = HTMLCode.toLowerCase();
  PosStart = 0
  while (PosStart > -1) {
    var PosStart = HTMLCodeSmall.indexOf("<script", PosStart);
    if (PosStart > -1) {
      // found start script
      var PosTag = HTMLCodeSmall.indexOf(">", PosStart) - PosStart + 1;
      var PosEnd = HTMLCodeSmall.indexOf("</script>", PosStart);
      if (PosEnd > -1) {
        // found end of script. extract it from original code...
        var Script = HTMLCode.substring(PosStart + PosTag, PosEnd);
        // execute extracted script
        eval(Script);
      }
      PosStart = PosEnd;
    }
  }
}
Du kannst also den neuen Inhalt laden und zB mit innerHTML setzen. Danach rufst Du mit dem geladenen Code noch diese StartJS() auf und der enthaltene JavaScript Code wird direkt gestartet.

Viel Spass!

Volker

Verfasst: 05.05.2009 18:14
von Programie
@Volker Schmid: Danke, aber das Problem ist ja, dass ich in dem geladenen Code JavaScript nur durch Events ausführen kann. Und daher geht da auch kein StartJS().
Oder gibt es ein Html-Tag, mit dem man das beim Laden ausführen kann, da ja onload beim Body-Tag auch nicht funktioniert (Body im Body :lol:)?

Also die Tags <script> und <body> gehen nicht. ;)


//EDIT: Hab es gerade geschafft. :allright:

Nach dem Laden des Inhaltes wird überprüft, ob sich Code im js-Tag befindet. Ich habe mit Absicht ein Tag verwendet, der normalerweise kein Html-Tag ist, da ich schon Probleme hatte, wenn ich den Script-Tag verwendete. Beim </script> wurde der JavaScript-Code abgebrochen, obwohl das nur der Suchbegriff für die Search()-Methode war. :mrgreen:
Aber keiner außer mir muss die Quelldatei für den Inhalt der Seite bearbeiten. Von dem her kann es ja egal sein, was man da als Tag verwendet. ;)