给公司编写了一个ACTIVEX控件,然后建立两个HTML页:
第一个,index.htm,里面有一按钮,按下的时候使用javascript的window.open方式打开pop.htm,一次打开3个(>1个都有问题,越多越容易出问题)
第二个,pop.htm,内嵌ACTIVEX问题,从index.htm打开3个pop.htm后,依次关闭,保留index.htm,发现ACTIVEX并没释放?可是也有释放的时候,释放是由IE控制的,如何自行控制强制让它释放掉?这样就会导致出问题,上次的ACTIVEX没释放,又从idnex.htm里open的时候,出现IE访问地址错误,大致是000...那种红叉,如何解决

解决方案 »

  1.   

    initialization
      TActiveFormFactory.Create(
        ComServer,
        TActiveFormControl,
        TActive1X,
        Class_Active1X,
        1,
        '',
        OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL,
        tmSingle);--这里将默认的tmApartment修改成tmSingle再试试
    end.
      

  2.   

    不行....index.htm:
    <html>
    <head>
    <script language="JavaScript" type="text/JavaScript">
    <!--
    var cnt=0;
    function btnPopWindow() { //v2.0
         //++cnt;
    cnt=1;
       window.open("pop.htm","test"+cnt,"scrollbars=yes,resizable=yes,fullscreen=no,top=0,left=0,height=800,width=600",true);
         //++cnt;
    cnt=2;
       window.open("pop.htm","test"+cnt,"scrollbars=yes,resizable=yes,fullscreen=no,top=0,left=0,height=800,width=600",true);
    }
    //-->
    </script>
    </head>
    <body><input type="button" onClick="btnOpenFile()" value="打开"></body>
    </html>pop.htm:
    <html>
    <head>
    <script language="JavaScript" type="text/JavaScript">
    <!--
    var cnt=0;
    function btnOpenFile() { //v2.0
    var DcmImage=document.all("DcmImage1");
    DcmImage.OpenFile(true);
    }
    //-->
    </script>
    </head>
    <body><input type="button" onClick="btnOpenFile()" value="打开">
      <OBJECT useas="dcmimage" classid="clsid:E33E34AA-1D77-4040-BC7D-E88DEF66650A" id="DcmImage1" name="DcmImage1" VIEWASTEXT width="600" height="600">
      </OBJECT>
    </body></html>
      

  3.   

    DAX Error吧?目前没有有效的解决方案。
    你第一个打开没问题,第二个打开时绝对会出现DAX ERROR,然后你手动刷新一下第二个窗口,没问题,然后就可以打开第三个窗口,但第四个还是会出现你第二个窗口的问题,只要你每次都手动刷新窗口的话,就可以避免。也许控制一下打开窗口的父窗口应该可以避免这个麻烦(我没试过)。CodeGear官网上修改AxCtrls的方法不好用!!