web-dev-qa-db-fra.com

Javascript fermer la boîte d'alerte

Je veux pouvoir fermer une boîte d'alerte automatiquement en utilisant javascript après un certain temps ou lors d'un événement spécifique (par exemple onkeypress). D'après mes recherches, il ne semble pas que ce soit possible avec la fonction alert () intégrée. Existe-t-il un moyen de le remplacer et de contrôler la boîte de dialogue qu'il ouvre?

De plus, je ne veux pas d'un remplacement qui montre une div cachée comme alerte. J'ai besoin d'une boîte de dialogue réelle.

31
Andrew Ensley

Comme mentionné précédemment, vous ne pouvez vraiment pas faire cela. Vous pouvez faire une boîte de dialogue modale à l'intérieur de la fenêtre en utilisant un cadre d'interface utilisateur, ou vous pouvez avoir une fenêtre contextuelle, avec un script qui se ferme automatiquement après un délai d'expiration ... chacun a un aspect négatif. La fenêtre modale à l'intérieur du navigateur ne créera aucune notification si la fenêtre est réduite, et une fenêtre contextuelle programmée (basée sur une minuterie) sera probablement bloquée par les navigateurs modernes et les bloqueurs de fenêtres contextuelles.

18
Tracker1

Apparaît que vous pouvez accomplir quelque chose de similaire avec l'API Notification . Vous ne pouvez pas contrôler combien de temps il est visible (probablement une préférence de système d'exploitation quelconque - sauf si vous spécifiez requireInteraction true), et cela nécessite que l'utilisateur clique sur "autoriser les notifications" (malheureusement), mais voici:

Si vous souhaitez qu'il se ferme après 1 seconde:

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

Si vous vouliez l'afficher plus longtemps que la "valeur par défaut", vous pourriez vous lier au rappel onclose et afficher une autre notification de répétition, je suppose, pour le remplacer.

Réf: inspiré par la réponse this , bien que cette réponse ne fonctionne plus dans le Chrome Chrome moderne, mais l'API de notification le fait.

6
rogerdpack

aucun contrôle sur la boîte de dialogue, si vous aviez le contrôle sur la boîte de dialogue, vous pourriez écrire du code javascript gênant. (Ce n'est pas une bonne idée d'utiliser l'alerte pour autre chose que le débogage)

5
ForYourOwnGood

Je veux pouvoir fermer une boîte d'alerte automatiquement en utilisant javascript après un certain temps ou lors d'un événement spécifique (ex: onkeypress)

Un sidenote: si vous avez une alerte ("données"), vous ne pourrez pas continuer à exécuter le code en arrière-plan (AFAIK) .... la boîte de dialogue est une fenêtre modale, vous ne pouvez donc pas perdre le focus aussi. Vous n'aurez donc aucune pression sur une touche ou aucune minuterie en cours d'exécution ...

3
Ironicnet

Essayez le plugin Boot Box.

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

Je suppose que vous pourriez ouvrir une fenêtre contextuelle et appeler que une boîte de dialogue. Je ne suis pas sûr des détails, mais je suis sûr que vous pouvez fermer une fenêtre par programme que vous avez ouverte à partir de javascript. Cela suffirait-il?

1
David Hanak

La seule vraie alternative ici est d'utiliser une sorte de widget personnalisé avec une option modale. Jetez un œil à jQuery UI pour un exemple de dialogue avec ces fonctionnalités. Des choses similaires existent dans à peu près tous les frameworks JS que vous pouvez mentionner.

1
Toby Hede