Javascript調用ocx控件


網上已經有很多相關的論述,不過最近我做個B/S的項目,還是費了不少勁。是他們寫的太籠統,還是我過於愚鈍呢,呵呵。

 

       拿我用的XMPPClient.ocx為例:

        《object classid="clsid:D6D2E2CC-2DB1-4361-AA 7C-3198C6B6F296" id="ocx01" name="ocx01" codebase="WEB-INF/lib/XMPPClient.ocx" width="32" height="32"》《/object》

      這是大多數在頁面上加.ocx控件的做法。那么那個classid怎么得到的?大多數網上的討論並沒有給出。——估計是太EASY了,不過咱是菜鳥啊。

       將控件注冊后,(這一步倒是講解的人很多),“開始——運行——regedit”打開注冊表,查找“XMPPClient.ocx”,可以看到
Javascript調用ocx控件

      這里給出了一串ID號,估計是這個了。按上面的格式設置,然后在.js文件中調用這個.ocx控件:

       var m_ocx01 = document.getElementByIdx (“ocx01”);

       // 設置屬性

       m_ocx01.UserName = “hazard”;

       …

       // 調用方法

       var bReturn = m_ocx01.Login ();

到這里就要報錯了:
Javascript調用ocx控件

    試了很多回,都是這個錯誤。屬性可以讀寫,可函數不能調用。

解決辦法:

       用Visual Stadio 6.0的工具:OLE View,

Javascript調用ocx控件

 

    在它的 Type Libraries中找到注冊的這個控件。

Javascript調用ocx控件Javascript調用ocx控件

 

    可以看到它內部的組成:里面的那個uuid和剛才從注冊表里找到的一樣。

Javascript調用ocx控件

 

    不過我要用的屬性和方法都在那個coclass里面,而它的uuid和上面的不同。

Javascript調用ocx控件

 

將《object》classid改寫,再次調用方法就成功了。

 

另:

Javascript調用ocx控件

這里面有很多的注冊控件和組件。如果是* Library類型的,則可以用

    var obj = new ActiveXObject (“COLBCATLib.COLBCatalog”);

的方法得到它的對象,然后直接操作就可以了。而* Control類型的,則只能用

    var m_ocx01 = document.getElementByIdx (“ocx01”);

的方法得到。而且由於它不能直接創建coclass的對象,所以要注意uuid的變化。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM