众所周知,打开新窗口以前经常被用作弹出广告用,而随着浏览器发展,现在估计除了ie6之外,基本都有广告拦截功能,最基本就是拦截这种非人为的弹出新窗口。
我对js研究不深,我所了解就是,必须是用户操作的处理过程中,用window.open才能顺利通过浏览器的拦截检查。
同样地,在Flash中,也有很多类似的安全限制,必须是用户操作才能触发一些危险代码的执行(例如,打开文件选择框)。
 
  今天,在处理XXXX的时候,点击flash的按钮时,无法正常弹出新窗口。于是,今天专门好好研究一下这个问题。
正好,前几天在km看了一篇上年年底的文章,也是说这个拦截问题,但是,经测试发现里边的方法都是不可行的。网上找了不少文章,都没有一个准确的说法,有说firefox下用navigateToURL,而ie下用window.open,有说用空form做一个提交操作,众说纷纭,但都不是完美的答案。
  最后想起来腾讯视频里边也有分享。而他们的播放器也是Flash,在flash里边点击按钮,在三大浏览器都是可以正常打开新窗口的。好吧,于是,就费了九牛二虎之力去反编译腾讯视频播放器的代码。但最后,发现别人就是用了最简单的方式,就ok了。。。
 
 
好了,说了一堆,结论如下:
要能正常弹出窗口,必须满足以下条件:
 
首先,不管什么浏览器,都用navigateToURL (Flash的api)
然后,
IE8/IE9:用户操作  &&   Flash的wmode为window(transparent就不行了)
Firefox:用户操作  (wmode为window或者transparent都可以)

chrome:用户操作  (wmode为window或者transparent都可以)
 
需要注意的是:所谓用户操作,必须是在本次事件处理的同步执行过程中,不能有setTimeout等”异步“处理。
 
 
例子:
 
stage.addEventListener(MouseEvent.MOUSE_DOWN, function(e:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.qq.com"), "_blank");
});
 
<param name="wmode" value="window" />

Flash打开新窗口 被浏览器拦截问题 navigateToURL被拦截 真正试验结果的更多相关文章

  1. 使用window.open打开新窗口被浏览器拦截的解决方案

    问题描述: 代码中直接使用window.open('//www.baidu.com', '_blank');会被浏览器窗口拦截 原因浏览器为了维护用户安全和体验,在JS中直接使用window.open ...

  2. window.open打开新窗口被浏览器拦截的处理方法

    一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.loca ...

  3. Ajax提交打开新窗口,浏览器拦截处理

    //主要是添加同步处理 $.ajax({ url: "ashx/OrderHander.ashx?action=CheckRepeat", data: { "OrderI ...

  4. Ajax提交打开新窗口,浏览器拦截处理;以及跨域问题

    //主要是添加同步处理 $.ajax({ url: "ashx/OrderHander.ashx?action=CheckRepeat", data: { "OrderI ...

  5. javacript实现不被浏览器拦截打开新窗口

    情景: 1.用户发送数据到服务器 2.服务器根据用户的数据生成文档 3.服务器把所生成的文档的下载地址提供给用户 4.用户使用的浏览器自动根据下载地址下载文件 实现: 网上搜索查找了下实现方式,就我查 ...

  6. ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式

    一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并 ...

  7. 浏览器拦截js打开新窗口

    最近做项目时,遇到的问题"想通过javascript在浏览器新标签页或新窗口打开一个新的页面,结果被浏览器大大无情给拦截了"业务需求:前端提交数据到后端,后端返回url,然后在新窗 ...

  8. JavaScript打开新窗口被拦截问题

    新窗口打开页面,一个很常用的效果,至于代码,一般第一反应都是这么写: window.open(url); 但是主流的浏览器都会拦截这种效果(可能这些年弹窗广告太多,如果浏览器不拦截,用户受不了)   ...

  9. JS打开新窗口防止被浏览器阻止的方法

    这篇文章主要介绍了JS打开新窗口防止被浏览器阻止的方法,分析对比了常用方法与改进方法,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了JS打开新窗口防止被浏览器阻止的方法.分享给大家供大家参考. ...

随机推荐

  1. 给Android组件添加事件一个很好用的方法

    在这里想和大家分享一下很好用的添加事件方法,特别是在处理ListView里的Item事件的时候,很方便. 首先,在XML里布局的时候,添加这样一个属性: android:onClick="C ...

  2. 《TCP/IP具体解释卷2:实现》笔记--ICMP:Internet控制报文协议

    ICMP在IP系统间传递差错和管理报文,是不论什么IP实现必须和要求的组成部分.能够把ICMP分成两类:差错和查询.查询报文 是用一对请求和回答定义的.差错报文通常包括了引起错误的IP包的第一个分片的 ...

  3. Jquery ajax传递复杂参数给WebService

    参考: http://www.cnblogs.com/kingge/archive/2011/08/04/2127642.html http://www.cnblogs.com/micromouse/ ...

  4. windowsmobile 开发环境

    Windows Mobile 6开发环境的配置过程 需要的文件列表:1.Visual Studio 2005 Professional及更高的版本(Visual Studio 2005 Express ...

  5. NGUI 3.5教程(一)安装NGUI 3.5.8

    写在前面: 网上找的NGUI教程,都是基于2.x版本号的.为了能配合教程学着做,我也是下载了各种NGUI 2.x版本号.可是在导入的时候,或多或少都报错(我用的Unity 的版本号是4.3.2).无奈 ...

  6. java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

    最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用 ...

  7. longest-substring-with-at-least-k-repeating-characters

    https://leetcode.com/problems/longest-substring-with-at-least-k-repeating-characters/ public class S ...

  8. spring boot xml与dao 映射关系

    mybatis的xml路径要和 dao的路径一模一样 dao 用@Mapper 注解

  9. OpenFace库(Tadas Baltrusaitis)中基于Haar Cascade Classifiers进行人脸检測的測试代码

    Tadas Baltrusaitis的OpenFace是一个开源的面部行为分析工具.它的源代码能够从 https://github.com/TadasBaltrusaitis/OpenFace 下载. ...

  10. linux下如何查看所有的用户和组信息?

    /etc/group  文件是用户组的配置文件. /etc/passwd 文件是用户的配置文件. 使用cat.more.less.head.tail以及vim等命令都可以查看.修改这两个配置文件. 说 ...