Ajax が新しいウィンドウを開いてブラウザにインターセプトされる場合の 2 つの解決策

小云云
リリース: 2023-03-19 11:48:02
オリジナル
1589 人が閲覧しました

この記事は主に、最近支払いをしているときに、支払いウィンドウが開いたときにブラウザがブロックしていることに気づきました。Baidu で検索したところ、支払いの確認に ajax が使用されていることが原因であることがわかりました。ウィンドウを開く前に実行できるため、ブラウザはこれが安全ではないと判断して、ixin ウィンドウを開くことをトリガーしませんでした。

解決策 1

まず、空の新しいウィンドウを開き、次に新しいウィンドウの URL を変更します。具体的なコードは

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("正在加载请稍后!");
  }
});
ログイン後にコピー

この実装には欠点があります。つまり、ajax が成功したかどうかに関係なく、var wd が実行されます。 = window will be run.open(); このコード行は、失敗後に閉じない限り、成功しても失敗しても新しいウィンドウを開きますが、これではユーザー エクスペリエンスが非常に悪くなるため、2 番目の方法を使用しました。それを実装します。

解決策 2

ajax はデフォルトで非同期なので、パフォーマンスが高く、ユーザー エクスペリエンスが優れていますが、セキュリティの問題にもつながるため、ブラウザーに新しいウィンドウのポップアップが安全であると認識させるには、すべての ajax を許可する必要があります。は同期であり、具体的なコードは

$.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("正在加载请稍后!");
  }
});
ログイン後にコピー

関連する推奨事項: 新しいフォームを開くための

ajax コールバック ブラウザのインターセプトを防ぐ効果的な方法

iframe クロスサイトがブラウザによってインターセプトされる

JS は、 Web ページの広告は、Browser_JavaScript スキルによってコードが傍受され、フィルタリングされます

以上がAjax が新しいウィンドウを開いてブラウザにインターセプトされる場合の 2 つの解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!