Maison  >  Article  >  interface Web  >  Comment ouvrir une nouvelle fenêtre avec JS pour éviter qu'elle ne soit bloquée par les compétences browser_javascript

Comment ouvrir une nouvelle fenêtre avec JS pour éviter qu'elle ne soit bloquée par les compétences browser_javascript

WBOY
WBOYoriginal
2016-05-16 16:22:281536parcourir

L'exemple de cet article décrit comment utiliser JS pour ouvrir une nouvelle fenêtre afin d'éviter qu'elle ne soit bloquée par le navigateur. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :

L'ouverture d'une nouvelle fenêtre à l'aide de la méthode traditionnelle window.open() sera bloquée par le navigateur. Alors, comment pouvons-nous faire en sorte que JS ouvre une nouvelle fenêtre sans être bloqué par le navigateur ? En fait, il existe encore des moyens. Nous analyserons ici comment résoudre ce problème

J'ai également rencontré un tel problème récemment, je vais donc partager avec vous comment ouvrir une nouvelle fenêtre. Tout le monde est invité à ajouter...

La première méthode consiste à utiliser la méthode window.open() de javascript natif (qui sera automatiquement bloquée par la navigation dans la plupart des cas)

La deuxième méthode consiste à simuler la soumission d'un formulaire. Le principe est de spécifier l'action du formulaire comme l'adresse URL que vous souhaitez ouvrir, et la cible est définie sur "_blank"

Copier le code Le code est le suivant :
document.getElementById("msgTxt").innerHTML="";
var s=document.getElementById("hiddenlink");
s.submit();

Cependant, la méthode de simulation de soumission de formulaire peut également être bloquée...

Le troisième type, lien hypertexte simulé () sur lequel on clique

Lorsque vous appuyez sur un bouton et que vous souhaitez ouvrir un nouvel onglet, vous pouvez simuler le lien enfoncé, puis ouvrir le lien.
Mais dans jQuery, l'utilisation de a.click(), a.trigger('click'), etc. ne provoquera pas l'exécution de l'événement par défaut du lien.
Le code suivant simule la génération d'un événement de clic sur un lien, puis exécute l'événement qui ouvre le lien par défaut.

Cependant, une chose à noter est : pour le navigateur IE, seul IE9 ou supérieur prend en charge la fonction document.createEvent, donc si le code suivant est exécuté dans IE, IE9 ou supérieur est requis

Copier le code Le code est le suivant :
var a = $("test").get(0);
var e = document.createEvent('MouseEvents');
e.initEvent('clic', true, true);
a.dispatchEvent(e);


La quatrième méthode consiste à utiliser l'événement bouillonnant du navigateur (réimprimé)

Copier le code Le code est le suivant :
cliquez surOpenWin : function(f){
var dataKey = "clickOpenWin.dataKey"
var moi = $(this);
var A = me.data(dataKey);
var returnData = null;
Si(!A){
A = $("");
         me.data(dataKey, A);
A.clic(fonction(e){
               if(returnData){
A.attr("href", returnData);
                }autre {
A.avant(moi);
                  e.stop();
            }
        });
>
me.mouseover(function(){$(this).before(A).appendTo(A);});
me.mouseout(function(){A.before($(this));});
moi.cliquez(fonction(){
A.attr("href", "#|");
         returnData = f.apply(this, arguments);
});
>

1). Tout d'abord, parlons de l'effet final, qui consiste à utiliser « A » pour contenir l'élément que vous souhaitez déclencher la fenêtre contextuelle. L'événement de clic d'origine doit renvoyer l'URL de la fenêtre contextuelle. up window, qui correspond à cette phrase :

Copier le code Le code est le suivant :
returnData = f.apply( ceci, arguments);

2) Parlons ensuite de la stratégie d’interception des pop-ups. Je n’entrerai pas dans les détails. De toute façon, la stratégie n’interceptera pas « A » elle-même
. 3) Enfin, il est synthétisé. Après avoir été inclus avec A, parce que l'événement va apparaître, des clics normaux sont utilisés pour générer une adresse de lien dynamique pour A, déclenchant l'événement de clic original de A, et c'est terminé.

J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn