9

我和我的同事遇到了一个令人讨厌的情况,我们必须使用主动 X 控件来操作页面上的网络摄像头。

是否可以将 javascript 事件处理程序分配给活动 x 控件中的按钮,以便在单击时触发页面上的操作,或者我们是否必须在 html 页面本身上创建一个按钮来操作活动 X 控件和那么可以在页面上触发任何必要的操作吗?

4

2 回答 2

7

只使用现有的 ActiveX 控件。像 Flash 或 Silverlight。Flash 具有内置的网络摄像头支持,可通过 JavaScript 进行控制。Silverlight 没有内置的相机支持,但它的 JavaScript 集成非常棒。

如果您必须自己编写,那么不用担心,让它与 JavaScript 交互是微不足道的。你只需要暴露IDispatch接口。

对于事件,您需要了解连接点

于 2008-08-25T19:25:24.740 回答
4

是的!您可以在 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
}
于 2008-08-25T19:22:03.297 回答