Javascript調用ocx控件

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

 

       拿我用的XMPPClient.ocx爲例:html

        《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控件:ui

       var m_ocx01 = document.getElementByIdx (「ocx01」);url

       // 設置屬性spa

       m_ocx01.UserName = 「hazard」;3d

       …code

       // 調用方法xml

       var bReturn = m_ocx01.Login ();htm

到這裏就要報錯了:
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的變化。

相關文章
相關標籤/搜索