Cet article décrit comment JS ouvre une nouvelle fenêtre pour l'empêcher d'être bloquée par le navigateur. Partagez-le 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 Traditional Window.Open () sera bloquée par le navigateur. Alors, comment pouvons-nous faire ouvrir JS une nouvelle fenêtre sans être bloqué par le navigateur? En fait, il y a encore des solutions, nous allons ici analyser comment résoudre ce problème
J'ai rencontré un tel problème récemment, donc je partagerai avec vous la méthode pour faire apparaître une nouvelle fenêtre. Tout le monde est invité à ajouter ...
La première consiste à utiliser la méthode JavaScript Native JavaScript.Open () (dans la plupart des cas, elle sera bloquée par la navigation)
Le deuxième type consiste à simuler la soumission du formulaire. Le principe est de spécifier que l'action du formulaire est l'adresse URL que vous souhaitez ouvrir, et la cible est définie sur "_blank"
La copie de code est la suivante: document.getElementById ("msgtxt"). Innerhtml = "<form id = 'HiddenLink' action = '" + shref + "' cible = '_ Blank'> <input type = 'Hidden' name = 'Object' value = '" + objValue + "'> </ form>";;
var s = document.getElementById ("HiddenLink");
S.Submit ();
Cependant, la méthode de soumission de forme simulée peut également être bloquée ...
Le troisième type, l'hyperlien simulé (<a>) est cliqué
Lorsqu'un bouton est enfoncé, si vous souhaitez ouvrir un nouvel onglet, vous pouvez simuler le lien en cours d'expression, puis ouvrir le lien.
Cependant, dans jQuery, en utilisant A.Click (), A.Trigger ('Click') et ainsi de suite ne provoquera pas l'exécution de l'événement par défaut du lien.
Le code suivant simule l'événement Cliquez sur le lien, puis exécute l'événement où le lien est ouvert par défaut.
Cependant, il convient de noter que: pour le navigateur IE, la fonction document.CreateEvent est prise en charge uniquement sur IE9 ou ci-dessus, de sorte que le code suivant doit être exécuté dans IE9 ou supérieur.
La copie de code est la suivante: var a = $ ("<a href = 'http: //www.test.com' cible = '_ Blank'> test </a>") .get (0);
var e = document.createEvent ('MouseEvents');
e.Initevent ('click', true, true);
A.DispatchEvent (E);
Le quatrième type: incident bouillonnant utilisant le navigateur (réimprimé)
La copie de code est la suivante: clickopenwin: fonction (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 (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));});
me.click (function () {
A.attr ("href", "# |");
returnData = F.Apply (ceci, arguments);
});
}
1). Tout d'abord, parlons de l'effet final, qui est d'utiliser «A» pour contenir les éléments que vous souhaitez déclencher la fenêtre contextuelle. L'événement de clic d'origine reviendra à l'URL pop-up. Correspondant à cette phrase: Copiez le code du code comme suit: returnData = f.Apply (this, arguments);
2). Ensuite, nous parlerons de la stratégie de blocage pop-up. Je ne parlerai pas des spécifiques. Quoi qu'il en soit, la stratégie n'interceptera pas "A" lui-même.
3). Enfin, il est synthétisé. Après avoir utilisé A pour l'inclure, car l'événement bouillonnera, utilisez des clics normaux pour générer une adresse de liaison dynamique à A, déclenchant l'événement de clic d'origine de A, puis il est terminé.
J'espère que cet article sera utile à la programmation JavaScript de tous.