JavaScript verzögert ausführen?

  • geschlossen
  • JavaScript

  • yannikst
  • 4199 Aufrufe 10 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JavaScript verzögert ausführen?

    Hallo Leute!

    Ich rufe auf meiner Homepage ein JavaScript in einer externen JS-Datei auf, Beispiel:

    <script language="javascript" type="text/javascript" src="http://www.domain.de/skript.js"></script>

    Das funktioniert so weit einwandfrei. Aber in diesem Fall macht es nicht so viel Sinn, wenn das Skript sofort beim Seitenaufruf ausgeführt bzw. "aktiviert" wird.

    Gibt es eine Möglichkeit, durch einen Befehl festzulegen, dass das Skript erst nach z.B. 5 Sekunden "aktiviert" oder gestartet wird?

    Würde mich sehr über Hilfe und Tipps freuen - vielen Dank im Voraus!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von yannikst ()

  • Nabend,

    meinst Du sowas?
    SELFHTML: JavaScript / Objektreferenz / window

    packe den Inhalt vom Script in eine Funktion und rufe diese mit der oberen Funktion auf ;)

    alternativ kannst Du im body Tag auch ein onload Attribut setzen, wo die Funktion von Deinem Script nach dem vollständigen Laden der Seite aufgerufen wird

    oder wenn Du das Script nicht bearbeiten kannst musst Du es mit Javascript über DOM dynamisch in Deine Seite einbinden

    z.B.

    HTML-Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    3. <head>
    4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    5. <meta name="author" content="Guardian" />
    6. <title>Ohne Titel 1</title>
    7. <script type="text/javascript">
    8. function ausfuehren() {
    9. var s = document.createElement("script");
    10. s.type = "text/javascript";
    11. s.src = "http://www.domain.de/skript.js";
    12. document.getElementsByTagName("body")[0].appendChild(s);
    13. return;
    14. }
    15. </script>
    16. </head>
    17. <body onload="window.setTimeout('ausfuehren()',5000);">
    18. </body>
    19. </html>
    Alles anzeigen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Guardian () aus folgendem Grund: Code Ergänzung

  • Hmm... ich habe Möglichkeit 2 versucht. Das scheint zwar in so fern zu funzen, dass er das Skript für 5 Sekunden unterdrückt wird, aber dann verschwindet plötzlich die Seite (wird weiß) und der Browser rödelt ewig rum und nix passiert...
  • Ich kann es nur aufrufen. Ich will einfach nur zum beispiel eine art pause einfügen zwischen zwei Skript-Aufrufen. Das muss doch irgendwie gehen. Wenn nicht, dann ist JavaScript aber ne wirklich sehr arme Sprache...

    So zum Beispiel:

    <script language="javascript" type="text/javascript" src="http://www.domain.de/skript1.js"></script>

    PAUSE (ca. 5 Sekunden)

    <script language="javascript" type="text/javascript" src="http://www.domain.de/skript2.js"></script>
  • Und genau das macht die Methode window.setTimeOut ... ;) Hast Du Dir mal den Link angesehen? SELFHTML: JavaScript / Objektreferenz / window

    Ich habe nur noch dynamisch den Scriptaufruf am Ende des body Tags eingefügt. In dem Fall können beide Scripte dynamisch erzeugt werden. Ich mach nochmal ein Bsp. - Moment

    hier erstmal das geänderte Script um beide Scripte von Dir dynamisch einzubinden:

    HTML-Quellcode

    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    3. <head>
    4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    5. <meta name="author" content="Guardian" />
    6. <title>Ohne Titel 1</title>
    7. <script type="text/javascript">
    8. function ausfuehren(scriptname) {
    9. var s = document.createElement("script");
    10. s.type = "text/javascript";
    11. s.src = scriptname;
    12. document.getElementsByTagName("body")[0].appendChild(s);
    13. return false;
    14. }
    15. window.setTimeout("ausfuehren('skript2.js')",5000);
    16. </script>
    17. </head>
    18. <body onload="ausfuehren('skript1.js');">
    19. <a href="#">Dies ist ein Test</a>
    20. </body>
    21. </html>
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Guardian ()

  • Das Problem ist, dass ich NULL Ahnung von JavaScript habe, deshalb hilft mir auch der Link oben nicht weiter! Bei dem Skript handelt es sich um ein Popup-Skript, welches erscheint, wenn auf der Seite was gemacht wird. DAs Problem ist: Das Popup kommt direkt wenn man auf die Seite kommt, und das ist mist!

    Das Popup soll merken, wenn der User die Seite verlassen will, dann kommt es. Beim IE scheint das zu funktionieren. Aber beim Firefox kommt es wenn man mit der Maus in die Seite geht, was ja genau das Gegenteil ist. Da zeigt sich mal wieder, dass Firefox doch kacke ist...
  • dann ist die Javascript Funktion onunload für Dich interessant:
    SELFHTML: JavaScript / Sprachelemente / Event-Handler

    ich befürchte aber das Dir der Link bei Deinen Kenntnissen auch nicht weiter hilft ...

    ich fasse mal zusammen:
    der User kommt auf die Seite und sieht sich alles an, bzw. macht irgendwas
    das Script 1 (Popup) soll nach 5 Sekunden gestartet werden
    wenn der User die Seite verlässt soll ein 2. Script ausgeführt werden

    richtig? - oder soll nur einfach das Popup erscheinen wenn die Seite verlassen wird?

    zur Not schreibe mir eine PN mit Deiner ICQ Nummer - antworten werde ich aber nicht in den nächsten Stunden ...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von Guardian ()

  • Hallo!

    Erst mal vielen Dank für deine Mühe und Hilfe.

    Ich fasse zusammen:

    Ich will, das ist das eigentliche Ziel, dass der Besucher sich die Seite ganz normal ohne Stress ansehen kann.

    Wenn er aber die Seite verlassen will und die Maus Richtung Schließen-Kreuz (Tab oder Browser selbst) bewegt, soll ein Popup öffnen. Das macht das Skript, welches ich habe und das funktioniert eigentlich auch.

    ABER: Beim Firefox öffnet dieses Popup sofort, also so:

    Ich gebe im Firefox die URL zur Website ein. Wenn ich jetzt mit der Maus auf die Website gehe (denn der User will ja scrollen etc.) dann kommt schon das Popup, was ja nicht so sein soll. Erst wenn er verlassen will, soll das kommen.

    Irgendwas ist da sicher am Skript!? Aber beim Internet-Explorer funktioniert das.

    Wie gut kennst du dich mit JS aus? Würde es dir weiterhelfen, wenn ich dir das eigentliche Skript zusende? Ich habe gerade gesehen ich komme ja doch dran, denn ich kann es ja einfach runterladen vom Webspace!?
  • sagen wir es mal so, ich habe beruflich und privat viel mit Javascript zu tun und scripte auch viel damit (Ajax) ;)

    die Wahrscheinlichkeit ist also groß ... , mach mal eine Beispielseite fertig, lade sie hoch und teile mir die Adresse ggf. in einer PN mit,

    ich sehe es mir dann Mittwoch Nachmittag an, ok?
  • An dieser Stelle nochmals vielen, vielen Dank an Guardian!!! Er hat das Problem perfekt gelöst, genau wie ich wollte.

    Konnte das Problem letztlich, wie sich rausstellte, deshalb nicht ganz so genau schildern, weil ich schlichtweg keine Ahnung hatte/habe! :D

    Es ist teilweise noch AJAX im Spiel und deshalb haben die Lösungen hier nicht ganz so funktioniert.

    @MODs:

    Kann also geschlossen werden! :)