Domanda

Voglio essere in grado di chiudere automaticamente una finestra di avviso utilizzando JavaScript dopo un certo periodo di tempo o su un evento specifico (ad esempio onkeypress). Dalla mia ricerca, non sembra che sia possibile con la funzione alert () integrata. C'è un modo per sovrascriverlo e avere il controllo sulla finestra di dialogo che apre?

Inoltre, non voglio una sostituzione che mostri un div nascosto come avviso. Ho bisogno di una vera finestra di dialogo.

È stato utile?

Soluzione

Come accennato in precedenza, non puoi davvero farlo. Puoi fare una finestra di dialogo modale all'interno della finestra usando un framework UI, oppure puoi avere una finestra pop-up, con uno script che si chiude automaticamente dopo un timeout ... ognuno ha un aspetto negativo. La finestra modale all'interno del browser non creerà alcuna notifica se la finestra è ridotta a icona e è probabile che un popup programmatico (basato sul timer) venga bloccato dai browser moderni e dai blocchi popup.

Altri suggerimenti

Sembra che tu possa realizzare qualcosa di simile con la Notification API. Non puoi controllare per quanto tempo è visibile (probabilmente una preferenza del sistema operativo di qualche tipo - a meno che non specifichi RequireInteraction true) e richiede all'utente di fare clic su " consentire le notifiche " (purtroppo), ma eccolo qui:

Se vuoi che si chiuda dopo 1s:

var notification = new Notification("Hi there!", {body: "some text"});
setTimeout(function() {notification.close()}, 1000);

Se desideri mostrarlo più a lungo di " default " potresti associare il callback onclose e mostrare un'altra notifica ripetuta, suppongo, per sostituirla.

Rif: ispirato da questa risposta, sebbene quella risposta non funzioni più nel Chrome moderno, ma l'API di notifica lo fa.

nessun controllo sulla finestra di dialogo, se avessi il controllo sulla finestra di dialogo potresti scrivere codice JavaScript invadente. (Non è una buona idea usare l'avviso per qualsiasi cosa tranne il debug)

  

Voglio poter chiudere un avviso   box automaticamente usando javascript   dopo un certo periodo di tempo o su a   evento specifico (ovvero onkeypress)

Un sidenote: se hai un avviso (" dati "), non sarai in grado di mantenere il codice in esecuzione in background (AFAIK) .... la finestra di dialogo è una finestra modale, quindi non puoi perdere la concentrazione. Quindi non avrai alcun tasto premuto o timer in esecuzione ...

Prova il plug-in della casella di avvio.

var alert = bootbox.alert('Massage')
alert.show();
setTimeout(function(){alert.modal('hide'); }, 4000);

Suppongo che potresti aprire una finestra popup e chiamare che una finestra di dialogo. Non sono sicuro dei dettagli, ma sono abbastanza sicuro che puoi chiudere una finestra programmaticamente che hai aperto da JavaScript. Basterebbe questo?

L'unica vera alternativa qui è usare una sorta di widget personalizzato con un'opzione modale. Dai un'occhiata all'interfaccia utente di jQuery per un esempio di una finestra di dialogo con queste funzionalità. Cose simili esistono in quasi tutti i framework JS che puoi menzionare.

Se lo fai in modo programmatico in JS sarà come reinventare la ruota. Consiglio di utilizzare un jQuery chiamato jGrowl

Puoi usare l'etichetta e impostare il tempo di dissolvenza in entrata e in uscita per es Nascondilo inizialmente e mostralo al clic. $ ( '# Div_Message') fadeIn (500) .delay (1000) .fadeOut (1500);.

window.setTimeout('alert("Message goes here");window.close();', 5000);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top