网页中Flash的确十分可爱又可恨。
它是网页广告的帮凶。由于弹出广告是过街老鼠,人人喊打。这样很多广告厂商改变策略,采用嵌入式广告。即使用DIV实现。
下面的代码摘自sohu主页:
<script src="./endlog.js"></script><!-- end copyright -->
</center>
<!-- flyingbutton_1 -->
<script language="javascript">
leftformat="flash";
leftpicsuspent="http://images.sohu.com/cs/button/huiyuan/80800710.gif";
leftlinksuspent="http://goto.sohu.com/goto.php3?code=huiyuan-bj69-frfly";
leftflashsuspent="http://images.sohu.com/cs/button/zhonghuacar/8080711.swf?clickthru=http://goto.sohu.com/goto.php3?code=zhonghuacar-sh294-fr8080";
leftmargin1="215";
topleft="90";
rightformat="";
rightpicsuspent="http://images.sohu.com/cs/button/eachnet/0725/8080.gif";
rightlinksuspent="http://goto.sohu.com/goto.php3?code=eachnet-fr8080";
rightflashsuspent="http://images.sohu.com/cs/button/tclpc/0610/tclpc8080.swf?clickthru=http://goto.sohu.com/goto.php3?code=tclpc-gz142homefly";
rightmargin1="550";
topright="90";
rightflytransparency="yes";
leftflytransparency="yes";
liumeitiformat="";
lmtleft="430";
lmttop="280";
lmtwidth="200";
lmtheight="150";
lmtransparency="no";
liumeiti="http://images.sohu.com/cs/button/kangtaike/bj3-401/2001500714.swf?clickthru=http://goto.sohu.com/goto.php3?code=kangtaike-bj401-frlmt";
liumeititime="8000";
</SCRIPT>
<script language="javascript" src="http://images.sohu.com/cs/jsfile/20021218allfly.js"></SCRIPT>
<!-- end flyingbutton_1 -->
<!-- flyingbutton_2 -->
<!--对联-->
<!--对联结束-->
<script language=javascript>
window.open('http://images.sohu.com/cs/button/eachnet/0725/frpopunb.html','frpopup','width=350,height=250,left=0,top=0');setTimeout("focus()",7000);
</script>
<!--全屏代码-->
<script language="javascript">
var FSStartTime = new Array("2003/07/25 20:00","2003/07/26 09:00","2003/07/26 11:00","2003/07/26 15:00","2003/07/26 20:00","2003/07/26 21:00","2003/07/27 20:00","2003/07/25 21:00","2003/07/27 11:00","2003/07/27 21:00","2003/07/28 11:00","2003/07/28 21:00");
var FSEndTime = new Array("2003/07/25 21:00","2003/07/26 11:00","2003/07/26 12:00","2003/07/26 17:00","2003/07/26 21:00","2003/07/26 22:00","2003/07/27 21:00","2003/07/25 22:00","2003/07/27 12:00","2003/07/27 22:00","2003/07/28 12:00","2003/07/28 22:00");
var FSLocation = new Array("0:0","0:0","0:0","0:0","0:0","0:0","0:0","0:0","0:0","0:0","0:0");
var FSWtAHe = new Array("800:600","800:600","800:600","800:600","800:600","800:600","800:600","800:600","800:600","800:600","800:600");
var FSHtmlSrc = new Array("http://images.sohu.com/cs/button/sohu/et/lejieshi/lejieshi-quan.html","http://images.sohu.com/cs/button/sohu/et/sol/solqishi/qishiquanping.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html","http://images.sohu.com/cs/button/sohu/et/lejieshi/lejieshi-quan.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html","http://images.sohu.com/cs/button/sohu/et/lejieshi/lejieshi-quan.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html","http://images.sohu.com/cs/button/sohu/et/sol/soljiqingye/quanping.html");
var max_Time_Out_Set = 8000;
</script>
<script language="javascript" src="http://images.sohu.com/cs/jsfile/fullscreen.js"></script><!-- end flyingbutton_2 -->
<script cnip src=http://images.sohu.com/cnip/164.js></script>

解决方案 »

  1.   

    <!--
    /**********************
      * Copyright:    Copyright (c) 2003
      * Description:  fullscreen.js
      * Company:      Sohu.com
      * @author  Fandiy
      * @version 2.0
      **********************/
     
      /* [ Init variable Sample ]
     * var FSStartTime = new Array("2003/01/10 10:30");
     * var FSEndTime = new Array("2003/01/10 11:30");
     * var FSLocation = "0:0";
     * var FSWtAHe = new Array("400:300");
     * var FSHtmlSrc = new Array("");
     * var max_Time_Out_Set = 8000;
    */

    var NavName = (document.all)? "IE":"Gecko";
    var FlashObj;
    if (FSStartTime&&FSEndTime&&FSWtAHe&&FSHtmlSrc){
    try{
    for (i=0;i<FSStartTime.length;i++){
    var ST = new Date(FSStartTime[i]);
    var ET = new Date(FSEndTime[i]);
    var NT = new Date();
    if ((ST <= ET)&&(NT < ET)&&(NT >= ST)){
    DoPrintFS(FSHtmlSrc[i],FSWtAHe[i],FSLocation[i]);
    break;
    }
    }
    }
    catch(E){
    }
    }

    function FSTurnOff(){
    var FSOO = document.getElementById("FSObjectOverFlash");
    if (FSOO){
    FSOO.style.visibility = "hidden";
    }
    }

    function TurnOffAllFlash(){
    var F = document.getElementsByTagName("object");
    for(i=0;i<F.length;i++){
    F[i].stop();
    }
    }

    function TurnOnAllFlash(){
    var F = document.getElementsByTagName("object");
    for(i=0;i<F.length;i++){
    if (F[i].id == "FSObjectOverFlash") continue;
    F[i].play();
    }
    }

    function DoPrintFS(FSSrc,FSWH,FSLo){
    try{
    TurnOffAllFlash();
    var WH = FSWH.split(":");
    var XY = FSLo.split(":");
    var OffSet = (window.screen.width>800)? 100:0;
    if (NavName == "IE"){
    var FSPrintHtml = "<div style='z-index:10000'><object id='FSObjectOverFlash' style='display:block;z-index:10000;";
    FSPrintHtml += "left:" + (parseInt(XY[0])+OffSet) + "px;top:" + XY[1] + "px;";
    FSPrintHtml += "width:" + WH[0] + "px;height:" + WH[1] + "px;position: absolute;' ";
    FSPrintHtml += "type='text/x-scriptlet' data='" + FSSrc + "'></object></div>";
    document.write(FSPrintHtml);
    }
    else if (NavName == "Gecko"){
    var FSPrintHtml = "<div id='FSObjectOverFlash' style='display:block;z-index:1000;";
    FSPrintHtml += "left:" + (parseInt(XY[0])+OffSet) + "px;top:" + XY[1] + "px;";
    FSPrintHtml += "width:" + WH[0] + "px;height:" + WH[1] + "px;position: absolute;'>";
    FSPrintHtml += "<iframe width='" + WH[0] + "' height='" + WH[1] + "' marginwidth=0 marginheight=0";
    FSPrintHtml += " hspace=0 vspace=0 frameborder=0 scrolling=no ";
    FSPrintHtml += "src='" + FSSrc + "'></iframe></div>";
    document.write(FSPrintHtml);
    }
    TurnOnAllFlash();
    if (max_Time_Out_Set) {
    setTimeout("FSTurnOff()",max_Time_Out_Set);
    }
    else {
    setTimeout("FSTurnOff()",7000);
    }
    }
    catch (E){
    TurnOnAllFlash();
    FSTurnOff();
    return;
    }
    }
    //-->
      

  2.   

    如果你看懂了这段代码,你就可以知道这是采用DHTML的特性,动态地向主页插入了一个大小为800x600的层,这个层播放满屏的Flash,延时若干秒后隐藏起来。
    由于div属于当前文档的一部分,不是独立的弹出窗口,这样很多广告清除工具无效。
    如果你具备DHTML和BHO的基础 ,用户很容易在DocumentComplete事件中,通过IHTMLDocument3的接口方法GetElementsByTagName,取得Object元素集合,设置其Style属性即可达到隐藏的目的。注意Style属性实现了一个IHTMLStyle接口。
      现在的问题是,我需要通过挂接HTMLDOCUMENTEVENTS2事件,处理:case DISPID_HTMLDOCUMENTEVENTS2_ONCONTEXTMENU:
    ATLTRACE(_T("HTMLDocumentEvents::oncontextmenu fired\n"));
    return DISP_E_MEMBERNOTFOUND;
    但是这段代码对几乎所有HTML元素都有效,唯独Flash例外,右击Flash时,这段代码根本不会响应,而其他所有元素都会在这里得到断点。
      该死的Flash(Facky),它只会弹出我们不需要的菜单,几乎没有办法对其进行扩充。
    Flash是否只是一个GDI对象,压根就不是窗口对象,没有窗口句柄,如果有如何得到其窗口句柄,以便对其进行窗口子类化?
      欢迎提出对网页中Flash菜单处理的办法?
      

  3.   

    http://www.csdn.net/develop/author/netauthor/jiangsheng/
    如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性 (原创) 1785 2002-8-18 
    8过这样只能通过Flash的自动化接口来控制,8一定可以改变菜单……
      

  4.   

    No Ad Killer, But flash Killer, It's a joke!
    我看过了如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性 (原创) 1785 2002-8-18 一文,并对照了Visual C++.NET(7.0(2002)/7.1(2003)
    中的Dlgdhtml.cpp的源代码.
      这些代码主要利用IDispatch 接口实现的和Invoke方法,调用组件接口方法.
    其本质属于自动化服务.调用时要求组件为每一个需要暴漏的方法提供和分配一个dispidMember,通过它间接的执行组件的方法.也就是组件的后期绑定.相对前期绑定,速度比较慢,而且不一定总是有效.如果组件没有给一些接口分配dispidMember,通过这种方法就无法调用这些属性或者执行其方法.不过可以通过IDispatch查询其他接口的指针.再调用其他接口的方法.这些接口的类型信息可以通过#import "Flash.ocx"导入.
      事实上,这些函数只能得到Object对象对应的Param参数值.并不能调用Flash.ocx的所有属性和方法.更无从得到其窗口句柄和菜单句柄.  
      Spy++就无法看到网页中Flash的窗口句柄。
      

  5.   

    偶BanFlash的方法是直接设置Flash的URL为空……
      

  6.   

    通过实现IInternetProtocol接口可以拦截.swf文件的下载, 设置Object或者Embed的Style属性可以隐藏Flash,禁止Flash显示并不困难.不过我通过设置Object的Movie参数为NULL,没有达到目的.当然通过put_innnerHtml 也可以达到上面的目的.
    不过我很渴望通过某种方法和Flash交户. 比如右键菜单. 
    或者flash上面显示浮动工具条.