有些情况下我们不使用a标签要打开一个新窗口,可以window.location.href = url,但是这样打开是在当前窗口打开,如果使用window.open(),在非用户触发的情况下是会被浏览器安全机制拦截的。

$(".btn").on("click",function(){window.open(url);
})
这个是生效的,因为是用户触发的
$(".btn").on("click",function(){$.post("url",function(data){if(data = "10000"){window.open(url);}})
});
这样是不生效的,会被浏览器所拦截,在苹果系统下是提示都没有,一般浏览器有的直接也可以打开,有的会提示出现拦截窗口,需要手动打开。

解决办法:

$(".j_addKejian").on("click",function(){$.post("getcampusname.php",function(data){var data = JSON.parse(data);var winForsafari;if(data.code == "10000"){var dataList = data.data;var dataListlen = dataList.length;var btnHtml = '';var schoolId;for(var i = 0;i<dataListlen;i++){btnHtml += '<span class="setUpkejian_btn" schoolId = "'+dataList[i].id+'">'+dataList[i].name+'</span>';}G.alert({"title":"提示","pclass":"addkejian","css": {width : 840},"text":btnHtml,"init":function(){  //事件预留区域$(".setUpkejian_btn").on("click",function(){$(this).addClass("cur").siblings().removeClass("cur");schoolId = $(this).attr("schoolId");});},"alert":function(){  //点击确认this._remove();winForsafari = window.open("", "_blank");  //解决非用户触发情况下不生效问题winForsafari.location.href = ('createtask.php?create=1&campusid='+schoolId);}});}else{winForsafari = window.open("", "_blank");  //解决非用户触发情况下不生效问题winForsafari.location.href = 'createtask.php?create=1';//改变页面的 location}});
在请求数据之前先定义一个变量,然后再去改变窗口的location就可以了。

补:

再换一种方式,在页面上增加a标签

//打开新窗口(防止window.open被拦截)
var openNewWindow = function(url, id){var a = document.createElement('a');a.setAttribute('href', url);a.setAttribute('target', '_blank');a.setAttribute('id', id);// 防止反复添加if(!document.getElementById(id)) {                     document.body.appendChild(a);}a.click();
}

然后直接调用就可以了,传上要打开的新地址,和a标签定义一个id
再次补充:上面这个定义的方法如果放在ajax回调函数中依然是不生效,最后的最后解决办法只能是来控制点击的按钮了,改变href,这样才能更好的打开,不会被拦截。










												

window.open不生效相关推荐

  1. 微信小程序全局配置文件app.json中window:backgroundColor“不生效”

    那些年我们一起踩过的坑~ 今天说一下微信小程序全局配置文件app.json中window的backgroundColor属性,设置之后发现没效果. 查了资料发现原来这个backgroundColor属 ...

  2. linux监听火狐浏览器关闭,火狐浏览器window.close()关闭无效

    我想很多开发者遇到过这样一个比较容易的问题:就是在火狐浏览器中无法关闭当前页面的事情.其实这是火狐浏览器为了安全起见,对他自己属性进行设定了特殊值导致的.如下就是解决方法: 解决javascript: ...

  3. vue组件mounted中window.onresize无效

    一.问题描述 在开发中发现,有两个vue组件中mounted中都用了window.onresize,但是在其中一个组件中正常,在另一个组件中无效. 二.问题分析 我注意到组件A是组件B的父组件,组件A ...

  4. window.onresize和window.addEventListener

    vue中在mounted中window.onresize不生效是因为: 引用的父组件和子组件都使用了window.onresize以至于一个window.onresize失效. 把window.onr ...

  5. threejs 绘制球体_ThreeJs 绘制点、线、面

    所有的三位物体都是由点构成,两点构成线,三点构成面,ThreeJs又如何绘制出点.线.面呢 ? 在ThreeJs中: 模型由几何体和材质构成 模型以何种形式(点.线.面)展示取决于渲染方式 1. 几何 ...

  6. created写法_在vue中created、mounted等方法使用小结

    created:html加载完成之前,执行.执行顺序:父组件-子组件 mounted:html加载完成后执行.执行顺序:子组件-父组件 methods:事件方法执行 watch:watch是去监听一个 ...

  7. Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置

    目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...

  8. HTML5---新增客户端储存

    H5-新增API 本地存储 随着互联网的快速发展,基于网页的应用越来越普遍, 同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据, HTML5规范提出了相关解决方案. 主流的浏 ...

  9. apicloud菜鸟教程_APICloud 对象之 Method

    //openWin 打开window 若 window 已存在,则会把该 window 显示到最前面 api.openWin({ name:'page1', url:'./page1.html', p ...

最新文章

  1. MySql JDBC
  2. shell 去除 字符串中的双引号
  3. C++ - 给出一个函数来连接两个字符串A和B,其中字符串A的后几个字节和字符串B的前几个字节重叠
  4. 一个栈桢对应着一个方法
  5. Spring Shell项目发布
  6. 如何在苹果官网下载旧版本的Xcode 方法
  7. 4699元!三星Galaxy A90 5G国行版开启预售 10月25日正式开售
  8. virtualenvwrapper
  9. 进击的小程序:品牌自营GMV同比增长210%,这些行业增速最快……
  10. Tensorflow官方文档学习理解 (四)-深入MNIST
  11. linux编译安装rrdtool,Linux下RRDTool安装方法
  12. 单片机4*4矩阵键盘的原理
  13. SpringCloud 微服务工具集v1.1
  14. [ICCV 2019] Few-Shot Learning with Global Class Representations
  15. 杭州辣府餐饮JAVA_超全“滨江美食必打卡list”,不收藏会后悔!年前再去搓几顿啊~...
  16. 第5-2课:图的拓扑排序
  17. vue antd table customRender 自定义标签
  18. 深度学习数学基础——矩阵微分篇
  19. Yade 安装时编译错误求问
  20. When are two methods alike?

热门文章

  1. AI8x13Bit 模拟量输入模块
  2. 这次单片机缺货,是国产单片机发展的绝好机会
  3. 《C++语言基础》实践参考——点、圆的关系
  4. 论文阅读”Efficient Deep Embedded Subspace Clustering“(CVPR2022)
  5. office 2007 快捷键
  6. 软甲测试学习之悟空CRM项目测试计划
  7. 无人机matlab程序,无人机高度基于matlab卡尔曼滤波程序 数据融合
  8. HTML列表中项目结点是,HTMLCollection和NodeList
  9. 三个经典故事改变人生
  10. 提取QQ群成员信息记录