我和我的同事遇到了一个令人讨厌的情况,我们必须使用主动 X 控件来操作页面上的网络摄像头。
是否可以将 javascript 事件处理程序分配给活动 x 控件中的按钮,以便在单击时触发页面上的操作,或者我们是否必须在 html 页面本身上创建一个按钮来操作活动 X 控件和那么可以在页面上触发任何必要的操作吗?
我和我的同事遇到了一个令人讨厌的情况,我们必须使用主动 X 控件来操作页面上的网络摄像头。
是否可以将 javascript 事件处理程序分配给活动 x 控件中的按钮,以便在单击时触发页面上的操作,或者我们是否必须在 html 页面本身上创建一个按钮来操作活动 X 控件和那么可以在页面上触发任何必要的操作吗?
是的!您可以在 C++/ActiveX 领域引发事件,这使 JavaScript 代码运行事件处理函数。我什至能够制作一个完全不可见的 ActiveX 控件(与页面背景相同的颜色),没有按钮或视觉反馈,它的所有 GUI 都通过 JavaScript 和 CSS 工作。
编辑:弗兰克的建议是正确的。这是脚本事件的链接。
当我想在浏览器中强制更新时,我的策略是调用一个名为 MyUpdate(它实现 IConnectionPoint)的 C++ 函数。
(此外,我确保在 Fire_MyUpdate 方法中发送 Windows 消息,因为有时 JavaScript 代码会通过调用 ActiveX 控件上的方法回调到 C++ 领域;这避免了冻结浏览器并确保 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
}