2010-03-04 47 views
1

我有一個擴展了一些函數的ActiveX對象。我有一個加載ActiveX對象並用Javascript調用它的方法的網頁。 ActiveX對象有兩種方法;問題在於Javascript可以成功調用其中一個,但不能調用另一個;引用對象不支持這個屬性或方法這是無稽之談,因爲我做了一個VB6.0應用程序成功調用這個其他方法,所以這兩個函數確實正確地擴展並執行他們的工作。JavaScript拒絕調用ActiveX方法,同意調用另一個

是的,IE瀏覽器的安全區域都設置好了,因爲我上面寫的JavaScript代碼可以調用一個方法,但是拒絕調用其他方法。

任何想法爲什麼Javascript是頭腦?

+0

您至少可以顯示這些方法的簽名。 – 2010-03-04 07:02:22

+0

我不確定我是否明白你的簽名是什麼意思,但是這裏是功能的IDL文件聲明: [propget] [id(3),helpstring(「method addh3h3」)] HRESULT addh3h3([in ] VARIANT x,[in] VARIANT y,[out,retval] VARIANT * z); ([property,ATR])] HRESULT ATR([out,retval] BSTR * pVal); 第一個可以從Javascript調用,第二個失敗。 調用失敗函數的JavaScript代碼是: 函數GetATR(){0} {0} {0}變量y =「」; y = actvx3obj.ATR(); alert(y); } – Orca 2010-03-04 07:15:08

+0

您是否試過IE非管理控制?如果是的話,那可能是原因。 – Eugene 2010-03-05 06:17:33

回答

0

答案很簡單。在IDL文件中,函數被聲明爲一個屬性(propget),而不需要任何輸入參數。在Javascript代碼中,我調用了actvx3obj.ATR();事實上,我應該一直在調用actvx3obj.ATR;因爲它是一個不帶參數的屬性get方法。

我發佈這個希望有人遇到類似問題可能會偶然發現解決方案。