绕过chrome的弹窗拦截机制
生活随笔
收集整理的這篇文章主要介紹了
绕过chrome的弹窗拦截机制
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在chrome的安全機(jī)制里面,非用戶觸發(fā)的window.open方法,是會(huì)被攔截的。舉個(gè)例子:
var btn = $('#btn'); btn.click(function () {//不會(huì)被攔截window.open('http://cssha.com') });上面的代碼中,window.open是用戶觸發(fā)的時(shí)候,是不會(huì)被攔截的,可以正常打開新窗口。再看下面這個(gè):
var btn = $('#btn'); btn.click(function () {$.ajax({url: 'ooxx',success: function (url) {//會(huì)被攔截window.open(url);}}) });上面的代碼中,用戶沒(méi)有直接出發(fā)window.open,而是發(fā)出一個(gè)ajax請(qǐng)求,window.open方法被放在了ajax的回調(diào)函數(shù)里,這樣的情況是會(huì)被攔截的。
那么,當(dāng)用戶點(diǎn)擊按鈕,發(fā)出ajax請(qǐng)求,如何在ajax請(qǐng)求完成后再打開新窗口,又不被攔截呢? 接著往下看:
var btn = $('#btn'); btn.click(function () {//打開一個(gè)不被攔截的新窗口var newWindow = window.open();$.ajax({url: 'ooxx',success: function (url) {//修改新窗口的urlnewWindow.location.href = url;}}) });上面的代碼中,用戶安點(diǎn)擊按鈕的時(shí)候,先打開一個(gè)空白頁(yè),再發(fā)ajax請(qǐng)求,在ajax回調(diào)里面修改新窗口的.location.href,這樣就不會(huì)被攔截
總結(jié)
以上是生活随笔為你收集整理的绕过chrome的弹窗拦截机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。