2016-07-31 13 views
0

Aus generischen Gründen muss ich einige Javascript in die HREF-Attribute einiger Navigationsleiste Links einfügen, um einige weitere Aktionen durchzuführen. Teilweise Aktionen erfordern eine verzögerte Ausführung, daher verwende ich window.setTimeout. Hierwindow.setTimeout in JavaScript-Link auf Firefox funktioniert nicht richtig

ist ein Beispiel:

<a href="javascript:alert('do anything');window.setTimeout(function(){alert('do anything else');},1111);">Login</a> 

In Google Chrome das funktioniert wie erwartet, aber auf Firefox leitet es automatisch auf eine neue leere Seite, die nur eine Zufallszahl enthält, wenn window.setTimeout genannt wird.

Vorschau: http://jsbin.com/rekosahute

Warum dies geschieht und wie ich das vermeiden kann und immer noch mit HREF für solche Aktionen Attribute? Besonders die zurückgegebene Nummer ist magisch für mich.

+1

Sie brauchen nicht 'window' zu schreiben, wenn Sie Funktionen in den Fenster-Objekte zugreifen wollen, sie sind immer erreichbar –

Antwort

1

es in einer anonymen Funktion Wrapping scheint es zu beheben:

<a href="javascript:(function(){alert('do anything');window.setTimeout(function(){alert('do anything else');},1111);})()">Login</a> 

Die Zahl, die zurückgegeben wird, und auf der Seite in FF angezeigt, der Rückgabewert von window.setTimeout ist, es ist ein Zähler jedes Mal erhöht Es heißt, damit Sie Timer verfolgen können. Hier

+0

Willkommen bei Stackoverflow und danken Du, das funktioniert. Sie haben die richtige Frage ausgewählt und verdienen die Wiederholung. :) – modiX

1

ist der richtige Weg ...

<a href="javascript: alert('do anything'); 
    window.setTimeout(
     function() { 
     alert('do anything else'); 
     }, 1111 
    ); 
    void 0"> 
Login 
</a>