Heim  >  Artikel  >  Web-Frontend  >  So öffnen Sie ein neues Fenster mit JS, um zu verhindern, dass es durch die browser_javascript-Fähigkeiten blockiert wird

So öffnen Sie ein neues Fenster mit JS, um zu verhindern, dass es durch die browser_javascript-Fähigkeiten blockiert wird

WBOY
WBOYOriginal
2016-05-16 16:22:281536Durchsuche

Das Beispiel in diesem Artikel beschreibt, wie Sie mit JS ein neues Fenster öffnen, um zu verhindern, dass es vom Browser blockiert wird. Teilen Sie es als Referenz mit allen. Die spezifische Analyse lautet wie folgt:

Das Öffnen eines neuen Fensters mit der herkömmlichen Methode window.open() wird vom Browser blockiert. Wie können wir also dafür sorgen, dass JS ein neues Fenster öffnet, ohne vom Browser blockiert zu werden? Tatsächlich gibt es noch Möglichkeiten, dieses Problem zu lösen

Ich bin kürzlich auch auf ein solches Problem gestoßen, daher werde ich Ihnen zeigen, wie Sie ein neues Fenster öffnen. Jeder kann gerne hinzufügen...

Die erste Methode besteht darin, die Methode window.open() des nativen Javascript zu verwenden (die in den meisten Fällen beim Surfen automatisch blockiert wird)

Die zweite Methode besteht darin, die Formularübermittlung zu simulieren. Das Prinzip besteht darin, die Aktion des Formulars als die URL-Adresse anzugeben, die Sie öffnen möchten, und das Ziel auf „_blank“ zu setzen.

Code kopieren Der Code lautet wie folgt:
document.getElementById("msgTxt").innerHTML="";
var s=document.getElementById("hiddenlink");
s.submit();

Die Methode zur Simulation der Formularübermittlung kann jedoch auch blockiert sein...

Der dritte Typ, simulierter Hyperlink (), der angeklickt wird

Wenn Sie eine Taste drücken und einen neuen Tab öffnen möchten, können Sie das Drücken des Links simulieren und dann den Link öffnen.
Aber in jQuery führt die Verwendung von a.click(), a.trigger('click') usw. nicht dazu, dass das Standardereignis des Links ausgeführt wird.
Der folgende Code simuliert die Generierung eines Link-Klick-Ereignisses und führt dann das Ereignis aus, das den Link standardmäßig öffnet.

Eine Sache ist jedoch erwähnenswert: Für IE-Browser unterstützt nur IE9 oder höher die Funktion document.createEvent. Wenn also der folgende Code im IE ausgeführt wird, ist IE9 oder höher erforderlich

Code kopieren Der Code lautet wie folgt:
var a = $("test").get(0);
var e = document.createEvent('MouseEvents');
e.initEvent('click', true, true);
a.dispatchEvent(e);


Die vierte Methode besteht darin, das Bubbling-Ereignis des Browsers (nachgedruckt)
zu verwenden

Code kopieren Der Code lautet wie folgt:
clickOpenWin: function(f){
var dataKey = "clickOpenWin.dataKey"
var me = $(this);
var A = me.data(dataKey);
var returnData = null;
If(!A){
A = $("");
         me.data(dataKey, A);
A.click(function(e){
               if(returnData){
A.attr("href", returnData);
                }else {
A.vor(mir);
                  e.stop();
            }
        });
}
me.mouseover(function(){$(this).before(A).appendTo(A);});
me.mouseout(function(){A.before($(this));});
me.click(function(){
A.attr("href", "#|");
         returnData = f.apply(this, arguments);
});
}

1). Lassen Sie uns zunächst über den endgültigen Effekt sprechen, der darin besteht, „A“ zu verwenden, um das Element einzuschließen, das das Popup-Fenster auslösen soll. Das ursprüngliche Klickereignis sollte die URL des Popup-Fensters zurückgeben. up-Fenster, das diesem Satz entspricht:

Code kopieren Der Code lautet wie folgt:
returnData = f.apply( dies, Argumente);

2) Dann lasst uns über die Popup-Abfangstrategie sprechen. Ich werde sowieso nicht auf Details eingehen, die Strategie wird „A“ selbst nicht abfangen 3) Schließlich wird es synthetisiert, da das Ereignis in die Luft sprudelt, um eine dynamische Linkadresse für A zu generieren, die das ursprüngliche Klickereignis von A auslöst, und es ist abgeschlossen.
Ich hoffe, dass dieser Artikel für das JavaScript-Programmierdesign aller hilfreich sein wird.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn