window.open不生效
有些情况下我们不使用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不生效相关推荐
- 微信小程序全局配置文件app.json中window:backgroundColor“不生效”
那些年我们一起踩过的坑~ 今天说一下微信小程序全局配置文件app.json中window的backgroundColor属性,设置之后发现没效果. 查了资料发现原来这个backgroundColor属 ...
- linux监听火狐浏览器关闭,火狐浏览器window.close()关闭无效
我想很多开发者遇到过这样一个比较容易的问题:就是在火狐浏览器中无法关闭当前页面的事情.其实这是火狐浏览器为了安全起见,对他自己属性进行设定了特殊值导致的.如下就是解决方法: 解决javascript: ...
- vue组件mounted中window.onresize无效
一.问题描述 在开发中发现,有两个vue组件中mounted中都用了window.onresize,但是在其中一个组件中正常,在另一个组件中无效. 二.问题分析 我注意到组件A是组件B的父组件,组件A ...
- window.onresize和window.addEventListener
vue中在mounted中window.onresize不生效是因为: 引用的父组件和子组件都使用了window.onresize以至于一个window.onresize失效. 把window.onr ...
- threejs 绘制球体_ThreeJs 绘制点、线、面
所有的三位物体都是由点构成,两点构成线,三点构成面,ThreeJs又如何绘制出点.线.面呢 ? 在ThreeJs中: 模型由几何体和材质构成 模型以何种形式(点.线.面)展示取决于渲染方式 1. 几何 ...
- created写法_在vue中created、mounted等方法使用小结
created:html加载完成之前,执行.执行顺序:父组件-子组件 mounted:html加载完成后执行.执行顺序:子组件-父组件 methods:事件方法执行 watch:watch是去监听一个 ...
- Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置
目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...
- HTML5---新增客户端储存
H5-新增API 本地存储 随着互联网的快速发展,基于网页的应用越来越普遍, 同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据, HTML5规范提出了相关解决方案. 主流的浏 ...
- apicloud菜鸟教程_APICloud 对象之 Method
//openWin 打开window 若 window 已存在,则会把该 window 显示到最前面 api.openWin({ name:'page1', url:'./page1.html', p ...
最新文章
- TClientDataSet[28]: 读写其他格式的 XML 文件
- SDUT 2860-生日Party(BFS)
- 带线的无限级下拉树列表-完整示例篇
- SP1811-Longest Common Substring【SAM】
- 虚拟网站禁用php,虚拟主机php程序fsockopen函数被禁用
- CCF NOI1058 统计单词
- 学习项目管理PRINCE2有什么用??
- LeetCode之3Sum Closest(Kotlin)
- 5.Scalal语法03 - 函数
- easyui tree json php,easyui tree json
- remix下ballot.sol调试
- 图片缩放库 Photoview 和 Gif 控件 GifView 的使用
- Java学习记录 类的高级特性篇
- 搞清线程池的几种实现方式
- selenium入门安装及环境搭建
- VMware12卸载之后安装其他版本导致回滚操作的解决方法之一
- ruby中uniq和uniq!的区别
- android 蓝牙串口连接不上,安卓手机搜索不到蓝牙模块HC-06,是怎么回事?
- docker国内镜像
- linux 虚拟专用网络设置,centos安装配置pptp 虚拟专用网络服务器步骤分享