ajaxリクエストwindow.open()ブロック

2761 ワード

プロジェクトはajax postを使用した後、戻ってきたsuccessに基づいて、新しいページを開く必要があります.window.openを使用して、グーグルブラウザが直接ブロックされていることを発見しました.
その後、この操作はユーザが自発的にトリガしたものではないことが分かったので、ajaxコールバック関数でclickやsubmitなどのユーザ動作をシミュレートして実行しても(trigger('click')、安全ではないと判断してブロックされた.
ブラウザは、ユーザが自発的にトリガーしたものではないと判断し、安全に実行できないため、ブロックされることもあります.くだらないことは言わないで,直接究極の解決策に進む.
解決方法:
    var newwin = window.open(); //      ajax    
    $.ajax({
        type: 'POST',
        url: '/do.php',
        dataType: 'json',
        error: function(){
              newwin.close();
        },
        success: function(data){
              newwin.location = data.url;
        }
    });

トップページが空白のページを開いて戻ってきたurlにジャンプすることもなく、期間間隔が短い.非同期リクエストの実行が速い場合はほとんど影響しません.
Google/360ブラウザは正常です.ネット上では同期synsに変更する人が多い.実は実际の卵は使っていないで、それは応答する时间がきわめて短くてやっと効き目があることができて、みんなが试みることができることを信じないで、しかし上のコードは微信の上で通じません
微信はwindow.openをサポートしていません.少なくとも私のアンドロイド微信ではwindow.openでウィンドウを開くことはできませんが、self.location.href='new.htmlで開くことができます.まとめ:上はwindow.openを通じて空白のページを开いて、体験がよくなくて、ajaxページのジャンプに対して新しいウィンドウを开くのは确かに良い方法がなくて、また微信と携帯电话のブラウザの互換性の问题を兼ねなければなりません:最后に私は直接ページのジャンプに変えて、微信とその他の閲覧器の互換性の问题を解决します:今各ブラウザと微信の上ですべて正常です:
$(document).ready(function () {
    $.post("/do.php", {
            order_sn: "111111"
            },
            function (data) {
                var data = eval("(" + data + ")");
                if(data.tatus==1)
            self.location.href = "";//      
            });
});