この記事は主に、最近支払いをしているときに、支払いウィンドウが開いたときにブラウザがブロックしていることに気づきました。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 サイトの他の関連記事を参照してください。