JS window.open()拦截问题解决方案

JavaScript014

JS window.open()拦截问题解决方案,第1张

使用js跳转的过程当中遇到了window.open()被chrome内核的浏览器拦截的问题。 出于安全考虑chrome浏览器会拦截掉非用户操作的行为,比如直接使用js跳转链接,这个行为不是用户的直接行为就会被chrome浏览器屏蔽掉。 比如我有一个click的事件 window.open()不是第一个执行的方法,它就会被屏蔽掉。 解决方案很简单,执行函数的时候,比如click,让window.open()先执行,打开一个空的窗口 然后再执行 在新打开的窗口当中读取网页内容。 这样就可以打开新窗口,并且不被chrome拦截了。

本博客原始地址: http://www.jianshu.com/p/9b634f1c9615

Ajax-hook源码地址 : https://github.com/wendux/Ajax-hook 欢迎star

ok, 我们使用jQuery(v3.1) 的get方法来测一下:

结果 :

拦截成功了! 我们也可以看到jQuery3.1内部已经放弃onreadystatechange而改用onload了。

假设在webpack下,第一步, 安装ajax-hook npm插件

第二步,引入模块并调用api:

拦截所有ajax请求,检测请求method,如果是“GET”,则中断请求并给出提示

拦截所有ajax请求,请求统一添加时间戳

修改请求返回的数据“responseText”

结果:

有了这些示例,相信开篇提到的需求都很容易实现。最后测一下unHook

输出:

相关链接:

Ajax-hook原理解析: http://www.jianshu.com/p/7337ac624b8e

BY THE WAY : 欢迎关注、star我的另一个开源项目 Neat.js !