win7 iframe,frameset下CertEnroll Object的调用

来源:互联网 发布:音频切割软件 编辑:程序博客网 时间:2024/05/30 05:28

在下载证书时,Win7采用了CertEnroll不再使用之前的XEnroll,但是发现在Iframe和FrameSet框架下对象调用存在问题

,尤其是FrameSet框架下。我们来逐一分析

1)iframe

   iframe嵌入的网页中无法用脚本创建对象,必须在父窗口中创建对象,然后在子窗口中调用。

  window.parent.

 

 

2)frameset

 与iframe完全一样,在FrameSet页面进行object写入,然后在引用页进行调用,给出实例。

<html>
<head>
<object classid="clsid:884e2049-217d-11da-b2a4-000e7bbb2b09" id="g_objClassFactory" name="g_objClassFactory" height="10" width="10" ></object>
<frameset id="allFrame" rows="98, *" cols="*" frameborder="NO" border="0" framespacing="0"  noresize>
  <frame src="/top2.jsp" scrolling="NO" noresize>
  <frameset id="mainFrame" cols="178,12,*" rows="*" border="0" frameborder="NO" framespacing="0" scrolling="NO" noresize>           
    <frame src="/left.jsp" name="lefttop" scrolling="auto" noresize>
     <frame name="bar" src="/common/mainPage0_bar.jsp"  scrolling="NO" frameborder="NO" border="0" framespacing="0" noresize>
     <frameset rows="65,*" cols="*" frameborder="NO" border="0" framespacing="0">
     <frame src="/top.jsp" scrolling="NO" name="rightTop" noresize>
     <frame src="/right.jsp" name="right"> 
    </frameset> 
  </frameset>
</frameset>
</head>

 

在right.jsp下进行调用

 

Set g_objCSPInformations =window.parent.g_objClassFactory.CreateObject("X509Enrollment.CCspInformations") 

 

 

可能又问会问为什么frameset有多层的话,是不是需要有多个parent调用呢,根据同事提供的参考发现,

所有frameset不管是多少层,都是以数组的方式存在,即以上的例子来看

调用各个frame的话,应该是

parent.FRAMEs[0]  对应 <frame src="/top2.jsp" scrolling="NO" noresize>

parent.FRAMEs[1]  对应 <frame src="/left.jsp" name="lefttop" scrolling="auto" noresize>

parent.FRAMEs[2]  对应  <frame src="/top.jsp" scrolling="NO" name="rightTop" noresize>

parent.FRAMEs[3]  对应 <frame src="/right.jsp" name="right">

 

Head元素,发现一个问题,如果Frameset如果在Head元素外面也不能正常调用object,暂还没有时间分析。