Este artigo descreve como o JS abre uma nova janela para impedir que ela seja bloqueada pelo navegador. Compartilhe para sua referência. A análise específica é a seguinte:
Abrir uma nova janela usando o método tradicional de janela.open () será bloqueado pelo navegador. Então, como podemos fazer o JS abrir uma nova janela sem ser bloqueado pelo navegador? Na verdade, ainda existem soluções, aqui vamos analisar como resolver este problema
Recentemente, encontrei esse problema, então compartilharei com você o método de exibir uma nova janela. Todos são bem -vindos para adicionar ...
O primeiro é usar o método nativo javascript window.open () (na maioria dos casos, será bloqueado pela navegação)
O segundo tipo é simular o envio do formulário. O princípio é especificar que a ação do formulário é o endereço da URL que você deseja abrir e o alvo está definido como "_blank"
A cópia de código é a seguinte: document.getElementById ("msgtxt"). Innerhtml = "<formig id = 'hiddenlink' action = '"+shref+"' alvo = '_ blank'> <input type = 'hidden' name = 'object ='"+objvalue+"''> </forma>";
var s = document.getElementById ("HiddenLink");
s.submit ();
No entanto, o método de envio de formulário simulado também pode ser bloqueado ...
O terceiro tipo, o hiperlink simulado (<a>) é clicado
Quando um botão é pressionado, se você deseja abrir uma nova guia, poderá simular o link que está sendo pressionado e abrir o link.
No entanto, no jQuery, o uso de A.Click (), A.Trigger ('Click') e assim por diante não fará com que o evento padrão do link seja executado.
O código a seguir simula o evento de clique em link e executa o evento em que o link é aberto por padrão.
No entanto, vale a pena notar que: para o navegador do IE, a função Document.CreateEvent é suportada apenas no IE9 ou acima, portanto o código a seguir deve ser executado no IE9 ou acima.
A cópia do código é a seguinte: var a = $ ("<a href = 'http: //www.test.com' target = '_ Blank'> test </a>") .get (0);
var e = document.createevent ('mouseevents');
e.initevent ('clique', verdadeiro, verdadeiro);
a.dispatchEvent (e);
O quarto tipo: incidente borbulhante usando o navegador (reimpresso)
A cópia do código é a seguinte: clickopenwin: function (f) {
var datakey = "clickopenwin.datakey"
var Me = $ (this);
var a = me.data (datakey);
var returnData = nulo;
if (! a) {
A = $ ("");
me.data (datakey, a);
A.Click (função (e) {
if (returnData) {
A.Attr ("Href", ReturnData);
}outro {
A. antes (eu);
E.Stop ();
}
});
}
me.mouseOver (function () {$ (this) .Before (a) .AppendTo (a);});
me.mouseout (function () {a.be antes ($ (this));});
me.click (function () {
A.attr ("href", "#|");
returnData = f.Apply (isto, argumentos);
});
}
1). Primeiro, vamos falar sobre o efeito final, que é usar "A" para conter os elementos que você deseja acionar a janela pop-up. O evento de clique original retornará ao URL pop-up. Correspondente a esta frase: copie o código da seguinte forma: returnData = f.Apply (isto, argumentos);
2). Então falaremos sobre a estratégia de bloqueio pop-up. Não vou falar sobre os específicos. De qualquer forma, a estratégia não interceptará "A".
3). Finalmente, é sintetizado. Depois de usar um para incluí -lo, porque o evento borbulhará, use cliques normais para gerar um endereço de link dinâmico para A, acionando o evento de clique original de A e, em seguida, ele é concluído.
Espero que este artigo seja útil para a programação JavaScript de todos.