Zur Navigation

Problem mit setInterval/setTimeout in Firefox

1 User 539 (Ex-Mitglied)

Hallo Jörg und die anderen!
Ich habe ein Problem mit einer Javascript Funktion, das ich noch nie zuvor hatte.

Ich rufe ein Script immer im Interval von 500MS (habe es ebenfalls mit 5000 und sogar 50000 versucht, geht aber auch nicht) um das selbige Script wieder aufzurufen. Es funkt im IE auch wunderbar, nur im Firefox nicht... Hier mal mein Code:
   function Init () {
    Highlight();
    window.setInterval("Highlight()", 500);
   }
   
   function Highlight () {
    alert("Test");
   }

Das geht genausowenig:
   function Init () {
    Highlight();
   }
   
   function Highlight () {
    alert("Test");
    window.setTimeout("Highlight()", 500);
   }

Es ging früher immer und ich weiß echt nicht wo das Problem liegt.
Ich hoffe hier kann mir jemand helfen.

Achja: Ich habe es auch bereits ohne window. versucht, geht auch nicht.

Danke schonmal an alle, Chris

06.09.2007 13:46

2 Jörg Kruse

Das erste funktioniert bei mir in Firefox und Opera. Wie rufst du es auf?

<body onload="Init();">

06.09.2007 14:01

3 User 539 (Ex-Mitglied)

bla
Haste meine E-Mail bekommen?

Edit: Es geht!

Also, ich rufe Funktionen immer folgenderweise auf:
<body onLoad="javascript:Init();">

Das was du mir geschickt hast, bringt leider auch nichts.
Hier ist übrigens der Link: www.bmhost.de/ESEx/

Zudem habe ich eine neue Frage: Wie kann ich in einem Array einem Key einen Wert zuweisen?
Ich kriege immer einen Fehler, also scheint es nicht wie in PHP zu funktionieren:
var Arr = Array("Key1" => "Wert1", "Key2" => "Wert2");

Danke, Chris


06.09.2007 14:54 | geändert: 06.09.2007 14:56

4 Jörg Kruse

Bei mir hat es mit dem Codeabschnitt in Beitrag 2 funktioniert - Firefox-Version 2.0.0.6. Das "javascript:" im onload-Attribut ist m.E. auch überflüssig

Der Aufbau von Arrays in JavaScript ist hier beschrieben:

http://de.selfhtml.org/javascript/objekte/array.htm

06.09.2007 15:39 | geändert: 06.09.2007 15:41

5 User 539 (Ex-Mitglied)

Ok, thx, aber es geht wie gesagt auch ohne "javascript:" nicht.
Ich habe auch FF 2.0.0.6.

MfG Chris

06.09.2007 16:06

6 Jörg Kruse

Der Gesamt-Code sieht so bei mir aus, kannst du den vielleicht nochmal testen:

<?xml version="1.0" encoding="utf-8" ?>
<!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">
<head>
<title>Test</title>
<style type="text/css">
/* <![CDATA[ */

/* ]]> */
</style>
<script type="text/javascript">
/* <![CDATA[ */
function Init () {
   Highlight();
   window.setInterval("Highlight()", 5000);
  }
  
  function Highlight () {
   alert("Test");
  }
/* ]]> */
</script>
</head>
<body onload="Init();">

</body>
</html>

Ansonsten liegt es vielleicht an der Konfiguration deines Firefox?

06.09.2007 16:27

7 User 539 (Ex-Mitglied)

Das komische ist ja, dass es bei anderen Seiten geht, nur eben hier nicht, also muss es ja was spezifisches sein.

Ich habe dein Script getestet, da gehts.
Also vermute ich, dass's an den If's liegt, oder?

EDIT: Omk, daran liegt's nicht. Habe alles auskommentiert.
Will der mich verarschen?^^

EDIT2: Ich habe es. Es liegt daran, dass der Content Editable ist:
    document.body.contentEditable = true;
    document.designMode = "on";

Doch ich brauche den Code, sonst geht es ja nicht -_-

EDIT3:
document.designMode = "on";
Das ist der übeltäter. Doch ohne den Code kann ich nichts editieren. Habe es auch schon mit = true; und = 1; probiert, geht aber auchnicht!

Danke, Chris

06.09.2007 18:44 | geändert: 06.09.2007 18:55

8 Jörg Kruse

document.designMode verlangt wohl ein "on" (bzw. "off"); warum dies bei Firefox das setInterval stoppt, weiß ich leider nicht - ich habe auch über Google nichts darüber gefunden

07.09.2007 00:39

9 User 539 (Ex-Mitglied)

Ich auchnicht.
Vielleicht gibt es ja auch eine andere Möglichkeit, ohne setInterval.
Ich beschreibe mal, was ich machen will, vielleicht kennst du dich ja aus:

Ich progge einen Editor, der bei bestimmen eingaben (z.B. es_msg) highlighted. Deshalb soll er halt jede halbe Sekunde gucken, ob eine neue Eingabe vorhanden ist und wenn diese ein Kommando ist, halt highlighten. Das wollte ich damit bezwecken. Aber da treten diverse Probleme auf, dass z.B. beim IE jede neue Zeile per ENTER mit <p> und nicht mit <br> gemacht wird, und nach jeder Eingabe ein Leerzeichen gesetzt wird. Ich kenne auch den Editor TinyMCE, die machen das mit einer Textbox, doch wie die das mit dem JS machen, ist mir 5 Klassen zu hoch, das versteht doch keiner...
Vielleicht hast du ja eine Idee...

Mfg Chris

07.09.2007 14:30

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]