2013-06-04 10 views
8

Il mio cliente desidera mostrare un avviso quando si entra in una pagina web.javascript carica blocco pagina carica

Tuttavia, un avviso blocca ulteriormente il caricamento della pagina finché non viene fatto clic su "OK" e la pagina deve essere caricata in background mentre viene visualizzato l'avviso.

Una soluzione sarebbe utilizzare un avviso personalizzato utilizzando HTML e CSS, ma questo non risponde alle esigenze del cliente.

Esiste una soluzione che utilizza "core javascript" o jQuery per consentire il caricamento della pagina mentre viene visualizzato l'avviso? Grazie.

+0

Perché non aspettare che la pagina venga caricata per visualizzare l'avviso? – FLX

+0

Capisco ... Quindi potresti fare un avviso personalizzato che sembra esattamente lo stesso dell'avviso nativo :) – FLX

risposta

8

È necessario eseguire attraverso un setTimeout:

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

Questo viene qui mostrato: Is there a JavaScript alert that doesn't pause the script?

+0

Wow! interessante ! – FLX

+4

Questo non funziona: http://jsfiddle.net/g33Et/ Javascript è un linguaggio a thread singolo –

+0

wow +1 che funziona. –

3

EDIT

vedere @ risposta di Funky per una soluzione in Firefox. (davvero interessante!)


La risposta semplice è no, non è possibile!

Motivo nativo alert() dialog is UI blocking e javascript è un linguaggio a thread singolo.

È necessario utilizzare un messaggio di dialogo personalizzato.

Tuttavia, se alcune richieste di ajax vengono eseguite appena prima del blocco dell'interfaccia utente, quando la finestra di dialogo alert() viene chiusa, la risposta ajax sarà/dovrebbe essere disponibile. Quindi, puoi ancora fare una richiesta di ajax poco prima di mostrare un avviso.

+0

Vedi il mio commento qui sotto – nadavge

+0

@FunKy No, non riesco a vedere come potrebbe funzionare. I webworker potrebbero essere una soluzione, ma non sono ancora in realtà implementati –

+0

Funziona, tuttavia non ho mai sentito parlare di Web Workers fino ad ora. Sembra promettente. – nadavge

0

È possibile utilizzare una finestra di dialogo personalizzata, invece di una finestra di avviso (che di caricamento della pagina di blocco). Ad esempio, Jquery UI Dialog è facile da usare (ma ci sono molti plugin che fanno esattamente la stessa cosa).

0

Mostra avviso quando la pagina è stata caricata. qui un esempio con jquery

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

Vuole che venga mostrato quando la pagina è ancora in fase di caricamento. – nadavge