如果设置了弹出窗口阻拦,在Flash中打开链接,会被拦住,这对在Flash中嵌入广告不是一个好消息,好在可以通过iframe hack可以绕过这一限制,昨天折腾了大半天,总算搞定了。至于iframe hack的原理是什么,不需要明白,我们只需要吃鸡蛋,不用管鸡长的什么样子。有几个Flash lib 封装了iframe hack,如收费的flexcapacitor和免费的 flex-iframe 。

使用flex-iframe之后,解决起来就很简单了:

(1)首先,设置 flash 程序的属性 wmode 为 transparent ,这样flash程序就挡不住iframe层了,否则的话,动一下flash,iframe层就看不见了。

(2)接下来,我们建一个广告的容器,假设是继承自VBox的class Ad,在Ad中放一个IFrame进去,IFrame连向广告页面,这里做演示用,就直接连向www.google.com了:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:mx="library://ns.adobe.com/flex/mx"
         width="400" height="300"
         xmlns:code="http://code.google.com/p/flex-iframe/"
         >
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <code:IFrame id="ad0" width="100%" height="160" source="http://www.google.com">
    </code:IFrame>
</mx:VBox>

把它嵌入到界面中,成功运行得到:

看起来不错,是吗?试着点击一下,可以直接打开。

问题是,这个iframe在Flash之上,如果Flash弹出一个窗口,则这个广告会拦在新窗口之上,请看:

设置Ad的visible是不行的,Ad的visible控制不了外面iframe的visible,iframe的visible需要有IFrame对象来控制,因此,需要第三步。

(3)控制可见性

对Ad类增加方法,控制iframe的可见性:

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:fx="http://ns.adobe.com/mxml/2009"
         xmlns:mx="library://ns.adobe.com/flex/mx"
         width="400" height="300"
         xmlns:code="http://code.google.com/p/flex-iframe/"
         creationComplete="init()">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            private static var _show : Boolean = false;
            public static function rotateAds():void
            {
                //TODO:
            }
            public static var instance : Ad;

public static function show():void
            {
                if(instance == null) return;
                _show = true;
                instance.setFrameVisible(true);
            }
            public static function hide():void
            {
                if(instance == null) return;
                _show = true;
                instance.setFrameVisible(false);
            }

protected function init():void
            {
                instance = this;
                ad0.visible = _show;
            }
            private function setFrameVisible(val:Boolean):void
            {
                ad0.visible = val;
            }
        ]]>
    </fx:Script>
    <code:IFrame id="ad0" width="100%" height="160" source="http://www.google.com" visible="false">
    </code:IFrame>
</mx:VBox>

当需要显示时show一下,需要隐藏时hide一下即可。当然,您也可以给Ad加一个属性进行绑定。

转载于:https://www.cnblogs.com/xiaotie/archive/2010/10/04/1841806.html

Flash中打开链接绕过弹出窗口阻拦程序的方法相关推荐

  1. php如何让B链接在当前页面打,javascript - 如何实现点击链接 A 弹出窗口 X,点击链接 B 继续在弹出窗口 X (刷新)打开?...

    就是有很多链接,点击链接会弹出窗口,如何实现点击不同的链接,始终在同一弹出窗口中打开,而不是每次都弹出新的窗口. 用下面的代码只能每次都弹出新的窗口. $('a').click(function(){ ...

  2. html转chm后脚本错误,win10系统打开chm资料弹出窗口提示脚本出现错误的恢复办法...

    有关win10系统打开chm资料弹出窗口提示脚本出现错误的操作方法想必大家有所耳闻.但是能够对win10系统打开chm资料弹出窗口提示脚本出现错误进行实际操作的人却不多.其实解决win10系统打开ch ...

  3. java一个界面用另一个界面的值_如何将参数/值从一个弹出窗口传递到Angular2中的另一个弹出窗口...

    我在Angular2中有一个要求,我需要打开第一个弹出窗口,用户会输入一些值 . 在某些用户事件(即按钮单击)上,我需要关闭该弹出窗口并打开另一个弹出窗口,其中包含用户在第一个弹出窗口中输入的值 . ...

  4. 猎豹浏览器怎么设置允许弹出窗口 允许弹窗设置方法详解

    频频出现的广告弹窗,让不少人选择打开所用浏览器的弹窗拦截功能.不过,此举也带来了一点小麻烦,那就是容易误伤"友军",一些必要的弹窗也会被强制拦截!那么,该怎么解决这一问题呢?下面小 ...

  5. js检测弹出窗口拦截程序

    在我们做web编程的时候,经常需要会用到弹出窗口的功能.但是由于很多的广告是以弹出窗口的形式存在的,所以就出现了所谓"弹出窗口拦截器"的功能.在xp打完sp2以后,就会有" ...

  6. 弹出窗口阻止程序干扰

    弹出窗口阻止程序设置可能会阻止你完成特定的功能,如下载对象内容. 弹出窗口阻止程序设置 • Internet Explorer – 将 Windchill 服务器添加至本地 intranet 区域. ...

  7. 服务器系统怎么把IE浏览器的阻止窗口关掉,如何关闭IE浏览器弹出窗口阻止程序...

    有时候使用浏览器做什么事情的时候,常常要求将IE浏览器的弹出窗口保护程序给关闭,该怎么做呢?下面学习啦小编整理了关闭IE浏览器弹出窗口阻止程序的解决方法,供你参考. 关闭IE浏览器弹出窗口阻止程序的解 ...

  8. java设置可信任站点_通过网页修改activex安全设置,添加信任站点,禁用弹出窗口阻止程序...

    信任站点的注册表项 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Rang ...

  9. 禁用弹出窗口阻止程序

    2019独角兽企业重金招聘Python工程师标准>>> 禁用弹出窗口阻止程序 方法一:通过浏览器设置 方法二:通过写注册表信息设置 具体代码如下: Windows Registry ...

最新文章

  1. 使用.NET中的Action及Func泛型委托
  2. gc的原因 频繁full_Java性能优化要点之:GC垃圾回收知识点整理
  3. 使用Ansible进行硬件引导
  4. java的io流的file类_java IO流 (一) File类的使用
  5. 【干货】2021年中国主要经济指标预测-中国科学院.pdf(附下载链接)
  6. 《生产实习》实习日志——JAVA大数据工程师
  7. canal.adapter启动报错Could not resolve placeholder ‘HOSTNAME%%.*‘
  8. Unsupervised Deep Homography - Pytorch实现
  9. 618网购盛宴开启,容联AI+CC为企业构建电商“新基建”中台
  10. 【平衡小车】新手应知一二之过程梳理和问题总结
  11. FPGA数字鉴相鉴频器的开发记录
  12. 树莓派3/4 实现天气语音播报与一种新的文本转语音方法 —— 百度云api +python +和风天气api
  13. 模块1--BH1750的应用(IIC)
  14. 建木持续集成平台v2.2.1发布
  15. java工厂方法_Java设计模式之工厂方法模式
  16. migo获取header sap_SAP中migo什么意思
  17. 人工智能时代,机遇与挑战并存
  18. input 起止时间_几种常用的控件(下拉框 可选框 起止日期 在HTML页面直接读取当前时间)...
  19. 华为芯片与器件设计工程师_华为芯片与器件设计工程师(实习)一、二面
  20. 如何对光栅进行多波长优化

热门文章

  1. LeetCode779 第K个语法符号 python刷题Day5
  2. CentOS中Xvfb的安装使用
  3. 【MOOC 测验】第1章 计算机网络和因特网
  4. 【原创】研究《绿色军团》NSF的音乐引擎(3)再取样再开始
  5. Hbase面试题总结(大数据面试)
  6. [设计模式] 构建者模式
  7. 鼓励参与计算机考试宣传标语,考试考场宣传标语横幅大全
  8. eclipse初始安装及性能优化
  9. SwiftUI 网络请求组件之 使用Combin观察iOS应用程序网络连接状态(中文教程含视频源吗)
  10. Unity3D:调用安卓摄像头拍照