2011-06-13 141 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窗口的一種方法,而不是查看器對象。