我的同事和我遇到了一個令人討厭的情況,我們必須使用活動的X控件來操縱網頁上的網絡攝像頭。Active X控件JavaScript
是否有可能將JavaScript事件處理程序分配給活動x控件中的按鈕,以便在點擊時觸發頁面上的操作,或者我們是否必須在html頁面上創建一個按鈕來操作Active X Control然後可以在頁面上觸發任何必要的操作?
我的同事和我遇到了一個令人討厭的情況,我們必須使用活動的X控件來操縱網頁上的網絡攝像頭。Active X控件JavaScript
是否有可能將JavaScript事件處理程序分配給活動x控件中的按鈕,以便在點擊時觸發頁面上的操作,或者我們是否必須在html頁面上創建一個按鈕來操作Active X Control然後可以在頁面上觸發任何必要的操作?
請只是使用現有的ActiveX控件。像Flash或Silverlight一樣。 Flash具有內置的攝像頭支持,並可通過JavaScript進行控制。 Silverlight沒有內置的攝像頭支持,但它的JavaScript集成是非常棒的。
如果您必須編寫自己的代碼,那麼請勿煩惱,讓它與JavaScript交互是微不足道的。你只需要暴露IDispatch
接口。
對於活動,您需要了解Connection Points。
是的!您可以在C++/ActiveX域中引發事件,使JavaScript代碼運行事件處理函數。我甚至可以製作一個完全不可見的ActiveX控件(與頁面背景相同的顏色),沒有任何按鈕或視覺反饋,它的所有GUI都可以通過JavaScript和CSS工作。
編輯:弗蘭克的建議是正確的。 Here's the link on scripting events.
我想在瀏覽器中強制更新時,我的策略是調用名爲MyUpdate(實現IConnectionPoint)的C++函數。 (另外,我確保在Fire_MyUpdate方法中抽取Windows消息,因爲有時JavaScript代碼會通過調用ActiveX控件上的方法調用回C++ land;這樣可以避免凍結瀏覽器並確保JavaScript GUI保持響應狀態,例如用於取消按鈕)
在瀏覽器端的JavaScript代碼具有全局變量引用對象,其次是「::」,其次是方法名稱:
function Uploader::MyUpdate()
{
// ... code to fetch the current state of various
// properties from the Uploader object and do something with it
// for example check Uploader.IsActive and show or hide an HTML div
}