window.open() 被拦截的问题解决
某些浏览器(比如Chrome)出于安全和体验的考虑,会禁止直接在JS中使用 window.open(url) 打开新的窗口。但是如果使用 window.open(url,'_self')
改变当前窗口是允许的。
禁止直接打开的原因就是非用户操作产生的新弹出窗口,会被认为这可能是一个广告,所以禁止了这种行为。
但是在开发的时候, 有时候又的确存在需要使用的场景。从浏览器客户端来看,可以在浏览器客户端设置, 但是这种方式只能临时或单个机器解决。从代码层面上来看, 可以结局的方法有四种:
- 使用表单提交方式
- 使用标签
<a>
或是按钮的onclick 事件 - 延迟打开
- 先打开页面, 再更改地址
1. 使用表单提交方式
创建一个表单元素, 设置相关属性。
var form = document.createElement('form');
form.action = 'xx';
form.target='';
form.method='';
document.body.appendChild(form);
form.submit();
Ajax 下载文件就可以使用这种方式。
2. 使用标签 <a>
或是按钮的onclick 事件
<a href="javascript:void(0) onclick="window.open(url)""></a>
模拟点击
function openurl(url) {var a = document.createElement('a');a.setAttribute('href', url);a.setAttribute('style', 'display:none'); a.setAttribute('target', '_blank'); document.body.appendChild(a);a.click();a.parentNode.removeChild(a);
}
3. 延迟打开
setTimeout('window.open(url);', 1000);
4. 先打开页面, 再更改地址
var newwindow=window.open('_blank');
newwindow.location='http://www.baidu.com';
也可以使用 window.location.assign(url)
或 window.location.replace(url)
window.open() 被拦截的问题解决相关推荐
- 解决window.open被拦截问题
解决window.open被拦截问题 参考文章: (1)解决window.open被拦截问题 (2)https://www.cnblogs.com/kewenxin/p/9638721.html (3 ...
- ajax请求 拦截窗口,ajax请求成功后新开窗口window.open()被拦截解决方法
ajax请求成功后新开窗口window.open()被拦截解决方法 问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但 ...
- 回调函数中window.open()被拦截
在回调函数中window.open默认是会被拦截的,因为浏览器判断它不是用户自己打开的,存在安全风险,所以可以伪造一个用户点击事件来避开,代码如下: function newWindow(url, i ...
- ajax请求成功后打开新开窗口(window.open())被拦截的解决方法
问题:今天在做项目时需要在ajax请求成功后打开一个新的窗口,此时遇到浏览拦截了新窗口的问题,尝试在ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('clic ...
- 360浏览器window.open被拦截
window.open是javascript函数,该函数的作用是打开一个新窗口或这改变原来的窗口,如果你直接在js中调用window.open()函数去打开一个新窗口,浏览器会拦截你,那么如何避免呢. ...
- Activity has leaked window that was originally added 问题解决
在做练习的时候,切换屏幕竖恒状态时,会出现Activity has leaked window that was originally added 错误.网上查询得知原因是因为alertDilaog没 ...
- 关于window.close()不能关闭的问题解决
问题:我最近看一个视频做一个很简单的贪吃蛇小游戏,我增加一些用户体验辅助功能,但是我发现我使用window,close()时,不起作用,并且查看控制台时发现有"Scripts may clo ...
- window.open不生效
有些情况下我们不使用a标签要打开一个新窗口,可以window.location.href = url,但是这样打开是在当前窗口打开,如果使用window.open(),在非用户触发的情况下是会被浏览器 ...
- 论多窗口相互关联下window.open打开已在的窗口时只激活不刷新的实现方案
前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言-博主看到后会去代替大家踩坑的- 主页: oliver尹的主页 格言: 跌倒了爬起来就好- 来个关注吧,点个赞 ...
- JavaScript之共享onload
我们知道,当我们将JS代码脚本放到<head></head>标签之间时,这是的js代码加载要先于DOM加载,而我们往往会在JS代码脚本中写一些获取DOM元素的代码,而此时的DO ...
最新文章
- 卧槽,分享一个Python学习神器
- 超级网管员原有QQ群己满,现增加新群
- 怎么确保一个集合不能被修改?
- 逻辑回归模型_联邦学习体系下——逻辑回归模型
- 用户体验数据分析 书单_如何使用数据改善用户体验设计
- python思想读后感_《Deep Learning with Python》读后感精选
- ndk编译出来的executable动态库入口函数的参数错乱
- 用OpenCV制作一个低成本的立体相机
- java62e62e,【报Bug】云端打包错误 apk
- 帧数达不到144用144hz_专业FPS玩家讲解:60Hz与144Hz刷新率的问题
- Tomcat9的安装及配置详细步骤
- MAC 如何快捷截图
- Android开机自启动服务的写法
- 人物志 | 美团首席科学家夏华夏:不断突破边界的程序人生
- 中文分词词库汇总(一)
- mysql高并发和大流量_高并发-高并发和大流量解决方案
- 是否可以同时学习两门编程语言?——我的语言学习经验告诉我不行
- FPV救援四足机器人设计(1)
- 【简七理财笔记】第七课:巧用信用卡,该薅的羊毛就要薅
- C#封闭方法和封闭类:sealed
热门文章
- Qt 5.7 亮瞎眼的更新
- 凸优化学习(一)凸集与凸函数、凸优化问题
- linux新建目录自动777权限,linux 777权限目录可疑进程检测
- 爱上文案——如何写出有销售力的广告文案
- ChatGPT 被玩挂了,我换成了微信官方对话机器人,简直了....
- 写作素材分类整理技巧分享
- python 百度地图api热力图,Python+百度API 画出美美哒热力地图(代码+数据)
- 一步一步分析Gin框架路由源码及radix tree基数树
- Android保存图片到本地或者数据库,并通知相册更新
- 金蝶K3系统单据对应ICTemplate表单ID信息