某些浏览器(比如Chrome)出于安全和体验的考虑,会禁止直接在JS中使用 window.open(url) 打开新的窗口。但是如果使用 window.open(url,'_self') 改变当前窗口是允许的。
禁止直接打开的原因就是非用户操作产生的新弹出窗口,会被认为这可能是一个广告,所以禁止了这种行为。

但是在开发的时候, 有时候又的确存在需要使用的场景。从浏览器客户端来看,可以在浏览器客户端设置, 但是这种方式只能临时或单个机器解决。从代码层面上来看, 可以结局的方法有四种:

  1. 使用表单提交方式
  2. 使用标签 <a>或是按钮的onclick 事件
  3. 延迟打开
  4. 先打开页面, 再更改地址

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() 被拦截的问题解决相关推荐

  1. 解决window.open被拦截问题

    解决window.open被拦截问题 参考文章: (1)解决window.open被拦截问题 (2)https://www.cnblogs.com/kewenxin/p/9638721.html (3 ...

  2. ajax请求 拦截窗口,ajax请求成功后新开窗口window.open()被拦截解决方法

    ajax请求成功后新开窗口window.open()被拦截解决方法 问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但 ...

  3. 回调函数中window.open()被拦截

    在回调函数中window.open默认是会被拦截的,因为浏览器判断它不是用户自己打开的,存在安全风险,所以可以伪造一个用户点击事件来避开,代码如下: function newWindow(url, i ...

  4. ajax请求成功后打开新开窗口(window.open())被拦截的解决方法

    问题:今天在做项目时需要在ajax请求成功后打开一个新的窗口,此时遇到浏览拦截了新窗口的问题,尝试在ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('clic ...

  5. 360浏览器window.open被拦截

    window.open是javascript函数,该函数的作用是打开一个新窗口或这改变原来的窗口,如果你直接在js中调用window.open()函数去打开一个新窗口,浏览器会拦截你,那么如何避免呢. ...

  6. Activity has leaked window that was originally added 问题解决

    在做练习的时候,切换屏幕竖恒状态时,会出现Activity has leaked window that was originally added 错误.网上查询得知原因是因为alertDilaog没 ...

  7. 关于window.close()不能关闭的问题解决

    问题:我最近看一个视频做一个很简单的贪吃蛇小游戏,我增加一些用户体验辅助功能,但是我发现我使用window,close()时,不起作用,并且查看控制台时发现有"Scripts may clo ...

  8. window.open不生效

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

  9. 论多窗口相互关联下window.open打开已在的窗口时只激活不刷新的实现方案

    前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言-博主看到后会去代替大家踩坑的- 主页: oliver尹的主页 格言: 跌倒了爬起来就好- 来个关注吧,点个赞 ...

  10. JavaScript之共享onload

    我们知道,当我们将JS代码脚本放到<head></head>标签之间时,这是的js代码加载要先于DOM加载,而我们往往会在JS代码脚本中写一些获取DOM元素的代码,而此时的DO ...

最新文章

  1. 卧槽,分享一个Python学习神器
  2. 超级网管员原有QQ群己满,现增加新群
  3. 怎么确保一个集合不能被修改?
  4. 逻辑回归模型_联邦学习体系下——逻辑回归模型
  5. 用户体验数据分析 书单_如何使用数据改善用户体验设计
  6. python思想读后感_《Deep Learning with Python》读后感精选
  7. ndk编译出来的executable动态库入口函数的参数错乱
  8. 用OpenCV制作一个低成本的立体相机
  9. java62e62e,【报Bug】云端打包错误 apk
  10. 帧数达不到144用144hz_专业FPS玩家讲解:60Hz与144Hz刷新率的问题
  11. Tomcat9的安装及配置详细步骤
  12. MAC 如何快捷截图
  13. Android开机自启动服务的写法
  14. 人物志 | 美团首席科学家夏华夏:不断突破边界的程序人生
  15. 中文分词词库汇总(一)
  16. mysql高并发和大流量_高并发-高并发和大流量解决方案
  17. 是否可以同时学习两门编程语言?——我的语言学习经验告诉我不行
  18. FPV救援四足机器人设计(1)
  19. 【简七理财笔记】第七课:巧用信用卡,该薅的羊毛就要薅
  20. C#封闭方法和封闭类:sealed

热门文章

  1. Qt 5.7 亮瞎眼的更新
  2. 凸优化学习(一)凸集与凸函数、凸优化问题
  3. linux新建目录自动777权限,linux 777权限目录可疑进程检测
  4. 爱上文案——如何写出有销售力的广告文案
  5. ChatGPT 被玩挂了,我换成了微信官方对话机器人,简直了....
  6. 写作素材分类整理技巧分享
  7. python 百度地图api热力图,Python+百度API 画出美美哒热力地图(代码+数据)
  8. 一步一步分析Gin框架路由源码及radix tree基数树
  9. Android保存图片到本地或者数据库,并通知相册更新
  10. 金蝶K3系统单据对应ICTemplate表单ID信息