JS lässt Browser einfrieren

Hallo

Dieses Script:

while(url.search("&")){ 94 url = url.replace("&","%"); 95 }

Lässt meinen Browser einfrieren. Woran liegt das? Normalerweise sollte er doch aufhören, wenn kein “&” mehr gefunden wird.

Andy

Solltest du wohl beim Anbieter deines browsers einfach mal
gucken, ob der Fehler schon bekannt/gemeldet ist, wenn nicht,
kannst du das ja machen.
Bis dahin bei der Version einfach die Skriptinterpretation
abschalten, dann sollte das Problem nicht mehr auftreten ;o)

String.search() gibt einen Integer zurück.

Trotzdem sollte der browser ja nicht gleich abkacken, sondern
den Fehler sinnvoll abfangen, etwa das Skript abbrechen.

Ist ja nicht Sinn eines Skriptes, einen browser einfrieren zu
lassen ;o)

Wie kann ich das nun lösen? !coffee

Gibt es eine Funktion wie „Wenn-Inhalt-Vorhanden-Ist(String)“-Dann-True/False-Ausgeben ?

Wenn ja, bitte helfen :neutral_face:

Sicher, aber eine Endlosschleife war auch nicht im Sinne des Programmierers. Er hat ja auch gefragt, warum das Script nicht funktioniert und nicht, warum der Browser nicht damit umgehen kann. :wink:

@TechnoLogiY: http://de.selfhtml.org/javascript/objekte/string.htm#search. String.search() gibt immer noch einen Integer zurück und -1 != false.

Danke!

Habe es jetzt so gelöst:

while(url.search("&") != -1){ url = url.replace("&","%"); }

:slight_smile:

Das Einfrieren des browsers scheint mir das schwerwiegendere
Problem zu sein, weil ja wohlmöglich tausende von Leuten die
gleiche Version des browsers verwenden.

Zudem steht ja da:

Das Problem liegt natürlich auch an dem Fehler im Skript, das
Einfrieren doch aber offenbar an einem Fehler des browsers.
‘Der Skriptfehler löst einen Fehler des browsers aus’, wäre also
vermutlich die nahezu komplette Antwort auf die ursprüngliche
Frage, warum der browser einfriert.

War es unter Windows? Wenn ja ist das normal. Bei Windows ist es oft so, dass es Programme stoppt nur weil sie mal nicht antworten, obwohl die grade dabei sind irgendwas zu debuggen etc.
Und dann bist machtlos und kannst nur noch den Task Manager rausholen.
Mein eines Programm z.B. lädt Maps für ein PC Spiel runter. Währenddessen sendet es anscheinend nichts zu Windows. Windows meint, dass Programm ist abgestürzt und stoppt den Prozess. Nun muss man ihn per Task Manager beenden oder es kommt diese tolle Meldung, dass das Prog abgestürzt ist und ob man an Microsoft den Fehler senden will oder nicht.

Wenn microsoft das schon so freundlich anbietet, kann man es
doch jedesmal losschicken, wenn das Problem auftritt ;o)
Das sollte doch aber nicht innerhalb von wenigen Sekunden
passieren oder doch?
Unter einfrieren täte ich ansonsten verstehen, daß man das
Programm unmittelbar nach Eintritt des Fehlers nicht mal mehr
einfach beenden kann, es also gar nicht mehr reagiert.
Dieses microsoft/windows-Problem sollte ja erst verzögert
auftreten…