Javascript activex动态加载

时间:2011-06-13 17:13:53

标签: javascript activex

我有以下问题: 我正在尝试使用dwf查看器应用程序,这是由一个允许在安装插件时查看dwf文件的activex备份。

通常人们会像这样使用这个插件:

<object
classid = "clsid:A662DA7E-CCB7-4743-B71A-D817F6D575DF"
codebase = "http://www.autodesk.com/global/dwfviewer/installer/DwfViewerSetup.cab#version=6,0,0,200"
ID = "Eview"
width = "500"
height = "500"
border="0"></object>

然后只需调用这样的函数:

Eview.Viewer.ExecuteCommand("BLACKANDWHITE");
etc..

问题是我现在正在服务器端的Iframe中创建对象:

<iframe id="dwfFrame" name="dwfFrame" src="plot.aspx" width="100%" height="100%" onload="initDWF()"/>
plot.aspx中的

我写动态dwf,然后在加载iframe时,打开activex并正确显示dwf。

   // Now output the resulting DWF.

    OutputReaderContent(Response, byteReader);

问题是在我的页面上我无法进行Javascript调用因为我没有对该对象的引用,我尝试将它们发布到iframe但它不起作用。像这样:

dwfViewer = document.dwfFrame;
dwfViewer.Viewer.ExecuteCommand("BLACKANDWHITE");
dwfViewer.ExecuteCommand("BLACKANDWHITE");

我相信这是因为iframe不是instancied activex对象,无论如何我可以得到这个对象,所以我可以继续工作吗?

1 个答案:

答案 0 :(得分:1)

尝试:

var dwfFrameDoc = parent.dwfFrame.document;
var dwfViewer = dwfFrameDoc.getElementById('Eview');

我不经常使用多个帧,但这就是你如何处理另一个帧。所讨论的框架是iframe并不重要。每个帧都有自己的window对象。 document是该对象的属性。 parent指的是当前window的父级,如果它已经是最高级别,则指向自身。

document.dwfFrame会为你提供id为dwfFrame的元素,它与iframe的window对象不同。即使是这样,执行dwfViewer.ExecuteCommand('BLACKANDWHITE');会尝试将ExecuteCommand作为iframe窗口的方法,而不是查看器对象。