2013-06-04 23 views
8

Mein Client möchte eine Warnung beim Eingeben einer Webseite anzeigen.JavaScript Alert blockieren Seite lädt

Eine Warnung blockiert jedoch das weitere Laden der Seite, bis "Ok" geklickt wird und die Seite im Hintergrund geladen werden muss, während die Warnung angezeigt wird.

Eine Lösung wäre die Verwendung einer benutzerdefinierten Warnung mit HTML und CSS, aber dies entspricht nicht den Anforderungen des Clients.

Gibt es eine Lösung mit 'core javascript' oder jQuery, damit die Seite geladen werden kann, während die Warnung angezeigt wird? Danke.

+0

Warum warten, nicht nur, dass die Seite geladen wird die Warnung angezeigt werden? – FLX

+0

Ich verstehe ... So könnten Sie eine benutzerdefinierte Warnung, die genau so aussieht wie die native Warnung :) – FLX

Antwort

8

Sie sollten es durch eine SetTimeout laufen:

setTimeout(function() { alert('hello world'); }, 1); 

Dies wird hier gezeigt: Is there a JavaScript alert that doesn't pause the script?

+0

Wow! interessant! – FLX

+4

Dies funktioniert nicht: http://jsfiddle.net/g33Et/ Javascript ist eine einzige Thread-Sprache –

+0

wow +1 das hat funktioniert. –

3

EDIT

siehe @ FUNKY Antwort für dieses Problem zu umgehen in Firefox. (wirklich interessant!)


Einfache Antwort ist nein, es ist nicht möglich!

Grund ist nativ alert() Dialog ist UI-Blockierung und Javascript ist eine einzelne Thread-Sprache.

Sie müssen eine benutzerdefinierte Dialognachricht verwenden.

Aber, wenn einige Ajax Anfrage kurz vor dem Blockieren der Benutzeroberfläche abgeschlossen sind, wenn alert() Dialog geschlossen ist, wird/sollte die Ajax-Antwort verfügbar sein. So können Sie immer noch eine Ajax-Anfrage machen, kurz bevor Sie sich melden.

+0

Siehe meinen Kommentar unter – nadavge

+0

@FunKy Nein, ich kann nicht sehen, wie das funktionieren könnte. Webworker könnten eine Lösung sein, aber es ist nicht wirklich implementiert –

+0

Es funktioniert, aber ich habe bisher noch nicht von Web Workers gehört. Scheint vielversprechend. – nadavge

0

Sie können ein benutzerdefiniertes Dialogfeld anstelle ein Warnfeld (die Sperrseite Last) verwenden. Zum Beispiel ist Jquery UI Dialog einfach zu bedienen (aber es gibt viele Plugins, die genau das gleiche tun).

0

Warnung anzeigen, wenn die Seite vollständig geladen ist. Hier ein Beispiel mit jquery

$(function() { 
    alert("foo"); 
}); 
+0

Er möchte, dass es angezeigt wird, wenn die Seite noch geladen wird. – nadavge

Verwandte Themen