ajax回调打开新窗体防止浏览器拦截有效方法
ajax回调打开新窗体的有效方法:避免浏览器拦截的妙招
你是否遇到过在ajax回调中打开新窗体却被浏览器拦截的问题?今天,就让我来为你揭晓有效的解决方案!
我们来分析下问题的根源。在点击事件内触发打开新窗体是正常的,但如果在点击事件内的回调函数内打开窗体,浏览器可能会将其视为广告弹窗并拦截。
那么,如何解决这个问题呢?这里有两种方法供您参考。
方法一:使用临时窗体
在点击事件内先打开一个临时窗体,由于这是正常点击事件触发的,所以不会被浏览器拦截。然后在ajax回调中更改临时窗体的路径。如果回调发现无需打开窗体,可以关闭之前的临时窗体。
示例代码如下:
```javascript
function click_fun_new(){
var tempwindow = window.open(); // 打开临时窗体
$.ajax({
'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
'type': 'post',
'dataType': 'json',
'data': data,
success: function (data) {
tempwindow.location = ".baidu."; // 当回调时更改临时窗体的路径
},
error: function(){
tempwindow.close(); // 回调发现无需打开窗体时关闭临时窗体
}
});
}
```
方法二:利用同步请求和a标签
在ajax请求中使用同步请求,然后在回调中更改页面上或创建的某个a标签的href属性,模拟点击该标签打开新窗体。这种方法同样可以避免浏览器拦截。
示例代码如下:
```javascript
function click_fun_new(){
var flag = false;
$.ajax({
'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
'type': 'post',
'dataType': 'json',
'data': data,
'async': false, // 同步请求
success: function (data) {
$("a").attr("href",".baidu."); // 当回调时更改a标签的href属性
flag = true; // 设置标志位
},
error: function(){}
});
if(flag){
$("a").click(); // href属性更改后模拟点击a标签打开新窗体
}
}
```以上就是防止浏览器拦截ajax回调打开新窗体的两种方法,希望对你的学习有所帮助。如果你还有其他疑问或者更好的解决方案,欢迎一起交流。
编程语言
- ajax回调打开新窗体防止浏览器拦截有效方法
- 微信小程序 开发之顶部导航栏实例代码
- php curl请求接口并获取数据的示例代码
- 浅析51个PHP处理字符串的函数
- .net core部署到windows服务上的完整步骤
- Vue组件化开发思考
- 详解SQL Server 中 JSON_MODIFY 的使用
- 上传图片前判断文件格式与大小验证文件是不是
- HTML5使用DeviceOrientation实现摇一摇功能
- 从学习到接单赚钱 十大网络技术人员推荐收藏的
- php实现图片以base64显示的方法
- JavaScript动态改变div属性的实现方法
- jQuery实现动态删除LI的方法
- 6行代码实现无组件上传(author-stimson)
- php7性能提升的原因详解
- asp.net后台如何动态添加JS文件和css文件的引用