博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
绕过chrome的弹窗拦截机制
阅读量:6259 次
发布时间:2019-06-22

本文共 821 字,大约阅读时间需要 2 分钟。

在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,这样就不会被拦截

转载地址:http://uhtsa.baihongyu.com/

你可能感兴趣的文章
《c程序设计语言》读书笔记-4.13-递归版本reverse函数
查看>>
background-clip&background-origin
查看>>
论坛迁移日记——discuz X2.5 迁移详细教程
查看>>
拦截器的执行顺序
查看>>
GestureDetector类及其用法
查看>>
String+变量”的操作是在运行时进行
查看>>
(待解决,效率低下)47. Permutations II C++回溯法
查看>>
工作两年
查看>>
201521123081《Java程序设计》 第10周学习总结
查看>>
UI组件-UITextView
查看>>
WPF中ListBox控件选择多个数据项
查看>>
七个小矮人测试随笔
查看>>
yum lnmp
查看>>
OC-id、构造方法
查看>>
Ps操作技巧(快捷键大全)
查看>>
[转] Boost算法
查看>>
自定义ASP.NET Identity(三)- 实现自定义MySQL ASP.NET Identity存储提供程序
查看>>
[转载]对于WebGrid第三方控件的使用
查看>>
自定义ViewPager,避免左右滑动时与水平滑动控件冲突
查看>>
[20190423]oradebug peek测试脚本.txt
查看>>