Por que o IE (7, 8, 9, 10) me faz atualizar a página inteira se eu quiser permitir pop-ups bloqueados?

3

Nada me irrita mais do que preencher um formulário inteiro cheio de dados apenas para clicar em um botão que deseja abrir uma janela pop-up e IE ter que atualizar a página inteira, fazendo com que eu perca tudo Eu digitei no formulário.

POR QUÊ

O bloqueador de pop-ups do IE inicialmente reescreve a origem de uma página ou algo do tipo para que os scripts não possam abrir pop-ups. É por isso que tem que fazer uma atualização total da página quando você diz para permitir pop-ups, de modo que atualiza sem modificar a fonte para desativar pop-ups?

Existe uma maneira de dizer ao IE que ele pode permitir pop-ups de uma página sem precisar atualizar?

    
por oscilatingcretin 21.07.2013 / 17:06

1 resposta

7

TL; DR: Como as páginas da web são realmente aplicativos e abrir um pop-up quando não é esperado que ele seja aberto pode introduzir um estado indefinido.

As pop-ups são exibidas usando JavaScript. Às vezes, um script pode esperar alguma reação de uma janela pop-up. Quando um navegador bloqueia um pop-up, ele deve notificar o script de que algo deu errado, por isso, é necessária uma ação apropriada. (Ou apenas cancela script inteiro, não é importante para esta questão)

Se você abrir o popup mais tarde, talvez queira reagir com o script que tentou mostrá-lo. Mas a execução do script terminou e o aplicativo entrará em um estado que nunca poderia ser inserido em um fluxo de aplicativo normal, portanto, é muito provável que o aplicativo não consiga manipulá-lo corretamente. O que pode acontecer?

  1. Nada. É possível que nada de ruim aconteça, mas você não pode ter certeza.
  2. Os scripts podem quebrar, tornando o aplicativo inutilizável até você atualizar a página da Web ou, às vezes, até que você limpe seus cookies.
  3. Algo inesperado pode acontecer, possivelmente criando uma falha de segurança.

Os resultados exatos de abrir um pop-up mais tarde não podem ser previstos de forma programática; portanto, o IE está impedindo que você quebre algo. Se você recarregar uma página da Web, os scripts serão processados novamente, mas com pop-ups exibidos à direita momentos.

    
por 21.07.2013 / 17:29