我有以下问题: 我正在尝试使用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对象,无论如何我可以得到这个对象,所以我可以继续工作吗?
答案 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窗口的方法,而不是查看器对象。