Deux solutions pour qu'Ajax ouvre une nouvelle fenêtre et soit intercepté par le navigateur

小云云
Libérer: 2023-03-19 11:48:02
original
1589 Les gens l'ont consulté

Cet article est principalement à partager avec vous. Récemment, alors que j'effectuais un paiement, j'ai constaté que le navigateur bloquait la fenêtre de paiement à son ouverture. Baidu a découvert que c'était parce qu'ajax était utilisé pour vérifier si le paiement était effectué. pouvait être effectué avant d'ouvrir la fenêtre, de sorte que l'utilisateur n'a pas déclenché activement l'ouverture de la fenêtre ixin, le navigateur a pensé que cela n'était pas sûr, il l'a donc bloqué.

Solution 1

Ouvrez d'abord une nouvelle fenêtre vide, puis modifiez l'URL de la nouvelle fenêtre. Le code spécifique est

var wd = window.open();
$.ajax({
  type: "POST",
  dataType: "json",
  url: URL,
  data: {orderNo:orderNo},
  success: function(data) {
    if(data.status=='success'){
      wd.location.href = 'http://www.baidu.com';
    }else{ 
      alert('订单不能支付!'); 
    }
  },error: function(data) {
    alert("正在加载请稍后!");
  }
});
Copier après la connexion

Cette méthode d'implémentation présente des inconvénients, c'est-à-dire que peu importe si ajax réussit ou non, la ligne de code var wd = window.open(); donc le succès et l'échec ouvriront une nouvelle fenêtre, à moins qu'elle ne soit fermée après un échec, mais cet utilisateur l'expérience sera très mauvaise, j'ai donc utilisé la deuxième façon d'y parvenir.

Solution 2

Parce qu'ajax est asynchrone par défaut, ce qui offre des performances élevées et une bonne expérience utilisateur, mais cela entraîne également des problèmes de sécurité. Vous devez faire penser au navigateur qu'il apparaît un nouveau. window est sécurisé, tous les ajax doivent être synchronisés avant d'ouvrir une nouvelle fenêtre. Le code spécifique est

$.ajax({
  type: "POST",
  dataType: "json",
  url: URL,
  async: false,//同步请求
  data: {orderNo:orderNo},
  success: function(data) {
     if(data.status=='success'){
       window.open("www.baidu.com");
     }else{
       alert('订单不能支付!');
     }
  },
  error: function(data) {
    alert("正在加载请稍后!");
  }
});
Copier après la connexion

Recommandations associées :

Rappel Ajax pour ouvrir un nouveau formulaire. empêcher l'interception du navigateur Méthode efficace

iframe cross-site bloqué par le navigateur

Code JS pour déterminer si la publicité Web est bloquée et filtrée par les compétences browser_javascript

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
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!