ajax回调打开新窗体防止浏览器拦截,就这么做!

问题剖析:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function click_fun(){
   window.open("www.baidu.com");//能打开
  $.ajax({
    'url': '${pageContext.request.contextPath}/activity/savePrizes.htm',
    'type': 'post',
    'dataType': 'json',
    'data': data,
    success: function (data) {
      window.open("www.baidu.com");//被拦截
    },
    error:function(){
  
    }
  });
}

分析:

打开新窗体只能在点击事件内触发,点击事件内的回调函数内打开窗体会被拦截,浏览器会认为是广告弹窗之类的代码

解决1:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 = "www.baidu.com";//当回调的时候更改临时窗体的路径
    },
    error:function(){
      tempwindow.close();//回调发现无需打开窗体时可以关闭之前的临时窗体
    }
  });
}

解决2:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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","www.baidu.com");//当回调的时候更改页面上或创建的某个a标签的href
      flag = true;//更改标志
    },
    error:function(){
        
    }
  });
  if(flag){
    $("#a").click();//href属性更改后模拟点击
  }
}

以上就是ajax回调打开新窗体防止浏览器拦截的两种方法,希望对大家的学习有所帮助。

http://www.jb51.net/article/83743.htm

ajax回调打开新窗体防止浏览器拦截有效方法的更多相关文章

  1. Ajax提交打开新窗口,浏览器拦截处理

    //主要是添加同步处理 $.ajax({ url: "ashx/OrderHander.ashx?action=CheckRepeat", data: { "OrderI ...

  2. Ajax提交打开新窗口,浏览器拦截处理;以及跨域问题

    //主要是添加同步处理 $.ajax({ url: "ashx/OrderHander.ashx?action=CheckRepeat", data: { "OrderI ...

  3. 使用window.open打开新窗口被浏览器拦截的解决方案

    问题描述: 代码中直接使用window.open('//www.baidu.com', '_blank');会被浏览器窗口拦截 原因浏览器为了维护用户安全和体验,在JS中直接使用window.open ...

  4. window.open打开新窗口被浏览器拦截的处理方法

    一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.loca ...

  5. Flash打开新窗口 被浏览器拦截问题 navigateToURL被拦截 真正试验结果

    众所周知,打开新窗口以前经常被用作弹出广告用,而随着浏览器发展,现在估计除了ie6之外,基本都有广告拦截功能,最基本就是拦截这种非人为的弹出新窗口.我对js研究不深,我所了解就是,必须是用户操作的处理 ...

  6. Response.Redirect 打开新窗体的两种方法

    普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location=' ...

  7. Window.open()打开一个窗体不被拦截

    Window.open()打开一个窗体不被拦截     在DataGrid中建一个模板列,在模板列中放一个客户端的Button,或者直接写你要的字句,然后用<a href>连接例:< ...

  8. Ajax异步打开新页面弹框被拦截,无法将参数值传递到后台

    一.Form提交,打开新页面被拦截 手动触发Form提交打开新页面是不会被拦截的,但是如果通过Ajax异步处理回调后再程序自动触发Form提交的话,就会被浏览器当成广告弹框拦截 1.暂时的解决办法:如 ...

  9. ajax请求后弹开新页面被浏览器拦截

    window.open()我想应该很多人都不陌生吧,它可以实现除用a标签以外来实现打开新窗口! 最近开发项目用到时,却遇到了麻烦,本来好好的弹出窗口,结果被浏览器无情的给拦截了! 代码如下: $.ge ...

随机推荐

  1. 虚拟机拷贝后网卡eth0变成了eth1的解决办法

    一.修改/etc/udev/rules.d/70-persistent-net.rules文件 将之前的eth0那行删了,将eth1改为eth0 二.配置ifcfg-eth0脚本,注意HWADDR那行 ...

  2. 《前端们,贺老 Live 面试你了!》所引发的思考与实践

    贺老在知乎live中提到了一个这样的问题: 产品经理提出了一个需求:用户点击文章阅读,返回之后阅读其他文章.当用户看得多了,容易点到自己看过的文章,造成时间浪费.所以想给点击过的文章加一个标记,如:& ...

  3. java 绘图

    java 绘图 圆形.线条.矩形.填充 插入图片 文字 //绘图 import java.awt.*; import javax.swing.*; public class Index extends ...

  4. sqlserver2008 创建定时任务

    SQL2008如何创建定时作业?此方法也适应于Sql Server2005数据库,有兴趣的可以来看下! 1.打开[SQL Server Management Studio],在[对象资源管理器]列表中 ...

  5. 每天一个 Linux 命令(17):whereis 命令

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度非 ...

  6. JavaScript 命名规则

    来源 :http://www.codelifter.com/main/tips/tip_020.shtml The following are the rules for naming JavaScr ...

  7. 黑马程序员_ Objective-c 内存管理笔记

    引用计数器 当一个对象被创建出来,就要分配给内存这个对象,当不用这个对象的时候,就要及时的回收,为了可以明确知道对象有没有被使用,就要用引用计数器来体现,只要计数器不为0,表明对象被使用中. 1.方法 ...

  8. ANSYS经典APDL编程

    在使用ANSYS的过程中的一些经验总结: Ansys Workbench 有限元分析虽然进入UI阶段,但是语言命令仍然是其基础核心. 1.ANSYS中的一些关键概念的理解; 参数化程序设计语言(APD ...

  9. Google App Engine, Python2.7的UnicodeDecodeError bug

    在跟Web Development,要在Google App Engine上写作业,出师不利,遇到以下bug: 2014-05-06 16:14:17 Running command: "[ ...

  10. php-工厂模式(Factory Method)解析

    关于工厂模式,首先要了解的就是多态这个概念:“多态是指在面向对象中能够根据使用类的上下文来重新定义或改变类的性质和行为”,这句话是我在其他博客看到,他已经概括的很好了,我就直接抄袭了.哈哈 通常简单工 ...