window.open()是原来常用的新开窗口的方式,但是呢,现在会被大多数浏览器阻止掉,默认为是非用户意愿的打开窗口,即广告之类的。

但是通过a链接的事件来open是可以的,因为这样会认为是用户主观的要打开另一个窗口所以不予以拦截。

   关于如何解决被阻止的问题,网上有很多种方式,一直未加以实践。前段时间项目中存在这样的需求,当时使用了几种方式,但是未生效,最后

通过延迟更改location的方式终于解决掉了。下面结合实际讨论一下。

   1.a标签的直接事件,不会被拦截。代码如下: 

 links.on('click', function (e) {
  e.preventDefault();
  var _this = $(this);
  window.open('/bookmerchant/fun/');
  }

   2.ajax 请求之后,进行新开窗口的操作会被拦截掉,即使是a链接出发的事件。如下:

  
self.addBtn.on('click', function (e) {
  /*ajax请求略去*/
}).on('success', function (res) {
if (res.code == 200) {
var cusId = res.data.customerId;
window.open('/bookmerchant/fun/');
  }
  此时的window.open()是不可行的。
网上看到的解决措施:
1.创建a标签然后,绑定事件,然后js触发。这种在我的实际操作中是同样被拦截的。
2.在请求之前新开标签window.open();然后请求接受之后更改location,这样是可以的。
var newTab=window.open('about:blank');
/*ajax请求*/
}).on('success', function (res) {
if (res.code == 200) {
newTab.location.href='/bookmerchant/fun';
}
  3.还有一种方式是新开标签window.open(),然后通过setTimeout()来延迟设置location,原理相同应该也是可行的(此处未实践,所以不敢说一定)。
4.通过form提交的方式进行跳转,同样未实践,不加评论。只是拿出来给大家一种提醒。
            

         

开不了的窗_____window.open的更多相关文章

  1. Storm on Yarn :原理分析+平台搭建

    Storm on YARN: Storm on YARN被视为大规模Web应用与传统企业应用之间的桥梁.它将Storm事件处理平台与YARN(Yet Another Resource Negotiat ...

  2. SVN(TortoiseSVN)提交时忽略bin跟obj目录

    SVN(TortoiseSVN)提交时忽略bin和obj目录 一般协作开发情况下,有意思无意将bin和obj目录添加到版本管理中是很烦人的事儿,在VS中不断地编译程序集和提交将带来版本暴增问题.如果你 ...

  3. C中extern的用法

    /*********************************************************************** INPUT3.C -- Input data pars ...

  4. 在XE5中 VCL空窗体的3个线程

    中午看到技术群里有人讨论, XE5一个空窗体程序就包含了3个线程, 赶忙打开XE5开了个空窗体一看, 果然如此 再打开D7和2010看了一下, 都是一个线程 这时看到有人说一个是输入法, 一个是GDI ...

  5. 让 SVN (TortoiseSVN)提交时忽略bin和obj目录

    2013-06-23 更新 后来我使用属性来过滤,结果反而没有效果了,之后我再次尝试使用全局忽略样式设置:*/bin */obj */packages 结果又有效果了,奇怪了. ------- 由于我 ...

  6. extern用法总结!

    extern 在源文件A里定义的函数,在其他源文件中是看不见的(即不能訪问).为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明: extern   函数原型: 这样,在源文件B里也能够调 ...

  7. 让乌龟在提交cocos2d-x版本时自动去掉不需要的东东

    引擎版本:2.1.4 ide:vs2012 一般协作开发情况下,有意思无意将bin.obj等一些目录添加到版本管理中是很烦人的事儿,在VS中不断地编译程序集和提交将带来版本暴增问题.如果你用的是乌龟S ...

  8. extern用法汇总

    extern 在源文件A里定义的函数,在其他源文件中是看不见的(即不能訪问).为了在源文件B里能调用这个函数,应该在B的头部加上一个外部声明: extern   函数原型: 这样,在源文件B里也能够调 ...

  9. 让 SVN (TortoiseSVN)提交时忽略指定目录

    2013-06-23 更新 后来我使用属性来过滤,结果反而没有效果了,之后我再次尝试使用全局忽略样式设置:*/bin */obj */packages 结果又有效果了,奇怪了. ------- 由于我 ...

随机推荐

  1. Selenium

    Selenium可以抓取完整的页面的html但是request 和java的url不能抓的很完整. selenium的方法是dirver.page_source

  2. Key-Value-Coding(KVC)

    Objective-C语法之KVC的使用   除了一般的赋值和取值的方法,我们还可以用Key-Value-Coding(KVC)键值编码来访问你要存取的类的属性. 下图来自苹果官网: 如何使用KVC存 ...

  3. ubuntu14.04配置impala的odbc连接

    cdh hive和impala的odbc驱动 http://www.cloudera.com/downloads.html.html 选择 SLES 11 64-bit下载: http://www.c ...

  4. Windows 下动态链接库和静态链接库

    1.静态链接库:就是在编译的时候把库中代码复制进工程中,导致工程变大,但是速度快. 缺点在于一套代码可能在内存中有多份拷贝,占用内存. 2.动态链接库:库由windos api加载库代码,内存中只有一 ...

  5. Aspose.Words 的使用 Aspose.Total_for_.NET

    最近在做有个业务需要Word做好模版,数据库取出业务数据在写入Word模版里面,然后生成PDF给客户端的业务人员 之前找了半天,没有找到用微软的Microsoft.Office.Interop.Wor ...

  6. linux mono环境

    安装好 CentOS 6.5 之后 1.更新系统 在命令行下执行 yum –y update 2.安装必要的软件 yum -y install gcc gcc-c++ bison pkgconfig ...

  7. 网络存储技术介绍(2) ( based on zt)

    http://www.educity.cn/tx/429084.html 互联网技术DAS.NAS和SAN存储方案的比较 按照设备位置和接入方式,磁盘存储可以分为内置存储和外挂存储,外挂存储又分为直连 ...

  8. KMP算法简明扼要的理解

    KMP算法也算是相当经典,但是对于初学者来说确实有点绕,大学时候弄明白过后来几年不看又忘记了,然后再弄明白过了两年又忘记了,好在之前理解到了关键点,看了一遍马上又能理解上来.关于这个算法的详解网上文章 ...

  9. js中==与===的区别

  10. rotate the clock

    A program test: You are given N round clocks. Every clock has M hands, and these hands can point to ...