如何繞過chrome的彈窗攔截機制


在chrome的安全機制里面,非用戶觸發的window.open方法,是會被攔截的。舉個例子:

    var btn = $('#btn'); btn.click(function () { //不會被攔截 window.open('http://cssha.com') }); 

上面的代碼中,window.open是用戶觸發的時候,是不會被攔截的,可以正常打開新窗口。再看下面這個:

    var btn = $('#btn'); btn.click(function () { $.ajax({ url: 'ooxx', success: function (url) { //會被攔截 window.open(url); } }) }); 

上面的代碼中,用戶沒有直接出發window.open,而是發出一個ajax請求,window.open方法被放在了ajax的回調函數里,這樣的情況是會被攔截的。

那么,當用戶點擊按鈕,發出ajax請求,如何在ajax請求完成后再打開新窗口,又不被攔截呢? 接着往下看:

    var btn = $('#btn'); btn.click(function () { //打開一個不被攔截的新窗口 var newWindow = window.open(); $.ajax({ url: 'ooxx', success: function (url) { //修改新窗口的url newWindow.location.href = url; } }) }); 

上面的代碼中,用戶安點擊按鈕的時候,先打開一個空白頁,再發ajax請求,在ajax回調里面修改新窗口的.location.href,這樣就不會被攔截啦啦啦啦~~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM