大部分现代的浏览器(Chrome/Firefox/IE 10+/Safari)都默认开启了阻止弹出窗口的策略,原因是window.open被广告商滥用,严重影响用户的使用。这个阻止弹出窗口的操作,并不是直接封杀window.open(),而是会根据用户的行为来判断这次window.open()是否属于流氓操作。

这些事件 handler 里的,但如果是代码自己触发的就会被阻止。

那么,我们可以知道,在Safari中无法open新窗口,原因是Safari的安全机制将其阻挡。

那么,如果我们的需求是通过Ajax请求数据后,在成功的回调函数中open一个相关的窗口,显然正常手段是没法在Safari中搞定的。

那么,如何解决该问题呢?很简单,直走不行绕着走,绕过这个安全机制,也就是说在你调用Ajax之前,先打开这个窗口,然后在回调函数里面修改打开窗口的location,这样就可以解决。

示例代码:

var openWin = function(){    var winRef = window.open("url","_blank");$.ajax({        type: '',        url: '',        data: '',......success:function(json){winRef.location = "新的url";}});
};

  

不过,由于种种原因,window.open()经常会被阻止掉,我们可以根据window.open()的返回值来判断其执行情况,代码如下:

var winOpen = window.open("url",...);if(winOpen == null || typeof(winOpen) == 'undefined'){consoel.log("窗口无法打开,请检查浏览器!");
}else{consoel.log("窗口打开成功!");
}

  

这样的话,就可以在界面上比较清晰的告知用户是怎么回事了。

本文摘自:http://www.imooc.com/article/78876

转载于:https://www.cnblogs.com/handsome-jm/p/11341645.html

window.open在Safari中不能打开相关推荐

  1. window.open 在Safari中被拦截

    在调移动支付问题的时候遇到过,用window.open打开一个微信支付链接,唤醒移动支付,在IOS下死活唤醒不了,是js代码冲突问题-是click事件IOS下不兼容问题-最后定位到window.ope ...

  2. safari支持java_BLOB URL无法在Safari中使用

    我使用D3来生成图形并想要将其导出到图像,这在除Safari之外的所有浏览器中都能正常工作 . 该代码生成一个D3 SVG,用于BLOB,用作图像,将其添加到可导出的画布中 . var blob = ...

  3. Swift:在Safari中打开App

    打开之前会发生什么呢,先看看这个图: 我这里只是简单模拟了一下.当你输入一个特殊的"url"之后,Safari弹出一个提示,问你是否继续打开这个App.如果你这个时候confirm ...

  4. 中无法打开源文件_Safari浏览器无法打开,如何解决Safari在Big Sur中崩溃的情况...

    macOs Big Sur的beta版本比最新版本的macOS更长,已于6月发布给开发人员.但是,这并不意味着最终版本完全没有问题.从来没有软件.有太多的变数和机会让错误潜入. 某些用户在Big Su ...

  5. 如何在iPhone和iPad上的Safari中在后台打开链接

    Safari lets you open links in a new tab on iPhone or iPad, but it immediately switches to that new t ...

  6. window在文件管理器中打开命令行窗口

    window在文件管理器中打开命令行窗口 操作:shift+鼠标右键w 转载于:https://www.cnblogs.com/alisonGavin/p/7506955.html

  7. Safari浏览器无法打开,如何解决Safari在Big Sur中崩溃的情况

    macOs Big Sur的beta版本比最新版本的macOS更长,已于6月发布给开发人员.但是,这并不意味着最终版本完全没有问题.从来没有软件.有太多的变数和机会让错误潜入. 某些用户在Big Su ...

  8. chrome和safari_私人浏览器-如何在Chrome和Safari中使用隐身模式

    chrome和safari Private browsing, or "incognito mode" has become a popular way to surf the w ...

  9. safari中判断app是否安装

    转载自http://m.blog.csdn.net/blog/wangyx810328/9345817 最近遇到一个需求,需要在safari中判断用户在设备上是否安装了某App,如果安装了则自动启动此 ...

最新文章

  1. 张玉萍:数据科学的“融”,是学术中的“锦上添花” | 优秀毕业生专访
  2. 深度学习与芯片之间的羁绊往事
  3. C# TeeChart的一些用法
  4. 安装程序无法创建新的系统分区也无法定位现有系统分区_如何拥有一个 Windows 10 和 Debian 10 的双系统...
  5. 区块链BaaS云服务(14)华大BGI区块链“概论“
  6. 从单体到混乱的微服务,阿里云托管式服务网格是如何诞生的?
  7. 音频处理十:( mp3 与wav 格式的相互转换)
  8. 小米回应造车传闻;饿了么就春节“套路”骑手活动致歉;Go 1.16 正式发布 | 极客头条...
  9. Java项目性能监控和调优工具-Javamelody
  10. FlashDevelop 遇到的Process not responding 问题
  11. Android中的IPC方式AIDL
  12. [论文评析]人体脉搏波速与血压之间关系探索新突破
  13. FreeBSD安装MySQL
  14. Python3.7安装教程
  15. 答题微信小程序实现(5):大功告成,整个模板,题库导入/切换/积分/选择对错判断/闯关成功
  16. centos 20T硬盘(超过16T)分区和格式化
  17. 解决PySide2的This application failed to start because no Qt platform plugin could be initialized问题
  18. python提取pdf发票信息_python读取pdf(发票)
  19. pytorch多卡并行模型的保存与载入
  20. python中forward的参数_ip_forward参数对Linux内核转发影响分析

热门文章

  1. 《大数据导论》——1.4节案例学习背景
  2. Java中读取某个目录下的所有文件和文件夹
  3. 怎样在不处理的情况下在ABBYY FineReader中添加图像
  4. 使用TaskManager爬取2万条代理IP实现自动投票功能
  5. random.nextint()
  6. Mybatis联合查询
  7. ASP.NET Web API Model-ModelBinder
  8. windows-台式机添加硬盘后如何加载、格式化新的分区
  9. 书籍记录——C++大学基础教程(第五版)
  10. MyBatis01 Idea中搭建MyBatis开发环境