Pergunta

Eu quero ser capaz de fechar uma caixa de alerta automaticamente usando javascript após um determinado período de tempo ou em um evento específico (ou seja, onkeypress). De minha pesquisa, não se parece com isso é possível com a função built-in alert (). Existe uma maneira de substituí-lo e ter o controle sobre a caixa de diálogo que se abre?

Além disso, eu não quero uma substituição que mostra um div oculto como o alerta. Eu preciso de uma caixa de diálogo real.

Foi útil?

Solução

Como mencionado anteriormente, você realmente não pode fazer isso. Você pode fazer um diálogo modal dentro da janela usando uma estrutura de interface do usuário, ou você pode ter uma janela pop-up, com um script que auto-fecha após um tempo de espera ... cada um tem um aspecto negativo. A janela modal dentro do navegador não irá criar qualquer notificação se a janela é minimizada e um programático (baseado temporizador) pop-up é susceptível de ser bloqueada por navegadores modernos, e bloqueadores de pop-up.

Outras dicas

Parece que você tanto pode realizar algo semelhante com a Notificação API. Você não pode controlar o tempo que é visível (provavelmente uma preferência OS de algum tipo - a menos que você especifique requireInteraction true), e exige que o usuário clique em "Permitir notificações" (infelizmente), mas aqui está:

Se você quer que ele para fechar após 1s:

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

Se você queria mostrar mais do que o "default" você pode ligar para o callback AoFechar e mostrar outra notificação repetição suponho, para substituí-lo.

Ref: inspirado por esta resposta , embora essa resposta não funciona no Chrome moderna mais, mas a API Notificação faz.

nenhum controle sobre a caixa de diálogo, se você tinha o controle sobre a caixa de diálogo, você pode escrever código javascript intrusivos. (A sua não é uma boa idéia para alerta serve para nada, exceto a depuração)

Eu quero ser capaz de fechar um alerta caixa automaticamente usando javascript após um determinado período de tempo ou em um evento específico (ou seja, onkeypress)

Uma nota: se você tem um alert ( "dados"), você não será capaz de manter o código em execução em segundo plano (AFAIK) .... a caixa de diálogo é uma janela modal, então você não pode perder o foco também. Então você não terá qualquer pressão de tecla ou temporizador a correr ...

Tente inicialização caixa de plugin.

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

Eu acho que você poderia abrir uma janela pop-up e que uma caixa de diálogo chamada. Tenho certeza dos detalhes, mas eu tenho certeza que você pode fechar uma janela de programação que você abriu a partir de javascript. Será que isso é suficiente?

A única alternativa real aqui é usar algum tipo de widget personalizado com uma opção modal. Dê uma olhada no jQuery UI para um exemplo de um diálogo com estas características. Coisas semelhantes existem em quase todos os framework JS você pode mencionar.

Se você fazê-lo por meio de programação em JS que será como reinventar a roda. Eu recomendo usar um jQuery plugin chamado jGrowl

Você pode usar o rótulo e defina seu fade in e out para v.g. Escondê-lo inicialmente e mostrar no clique. $ ( '# Div_Message') fadeIn (500) .delay (1000) .fadeOut (1500);.

window.setTimeout('alert("Message goes here");window.close();', 5000);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top