Maison > interface Web > js tutoriel > le corps du texte

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

WBOY
Libérer: 2016-05-16 16:22:28
original
1542 Les gens l'ont consulté

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.

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!