2011-06-13 79 views
0

我有以下问题: 我想使用一个dwf查看器应用程序,这是由一个activex备份,允许安装插件时查看dwf文件。Javascript的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()"/> 

in plot.aspx我写动态dwf,然后当加载iframe时,activex是op ened和dwf正确显示。

// Now output the resulting DWF. 

    OutputReaderContent(Response, byteReader); 

的问题是我的网页上,我不能让JavaScript调用,因为我没有对象的引用,我想他们发出的I帧,但它不工作。就像这样:

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

我beleive这是因为iframe是不是instancied ActiveX对象,是有反正我能得到阿霍德这个对象,所以我可以在工作的呢?

回答

1

尝试:

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

我不玩的多帧过于频繁,但是这是你将如何解决另一个框架。所讨论的帧是iframe应该没有关系。每个帧都有自己的window对象。 document是该对象的一个​​属性。 parent指的是当前window的父级,或者如果它已经是最高级别,则指向其自身。

document.dwfFrame会得到您的id为dwfFrame的元素,它与iframe的窗口对象不同。即使是这样,做dwfViewer.ExecuteCommand('BLACKANDWHITE');也会尝试将ExecuteCommand作为iframe窗口的一种方法,而不是查看器对象。