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

Fragen zu allen anderen Programmiersprachen.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag 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. ;)
Zuletzt geändert von Programie am 11.05.2009 00:42, insgesamt 1-mal geändert.
BildBildBildBild
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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. :(
BildBildBildBild
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

es kommt hier vermutlich mal drauf WANN (und wO) der javascript-code
geladen und WANN der geladene javascript-code ausgeführt wird.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag 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
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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
BildBildBildBild
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Beitrag 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
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag 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. ;)
BildBildBildBild
Antworten