代码之家  ›  专栏  ›  技术社区  ›  kemiller2002

Active X控件JavaScript

  •  9
  • kemiller2002  · 技术社区  · 18 年前

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

    是否可以为活动x控件中的按钮分配一个javascript事件处理程序,以便它在点击时在页面上触发一个操作,或者我们必须在html页面本身上创建一个按钮来操纵活动x控件,然后可以在页面上启动任何必要的操作?

    2 回复  |  直到 11 年前
        1
  •  7
  •   Frank Krueger    18 年前

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

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

    对于活动,您需要了解 Connection Points .

        2
  •  4
  •   Zev Spitz    9 年前

    对!您可以在C++/ActiveX平台中抛出事件,使JavaScript代码运行事件处理程序函数。我甚至能够制作一个完全不可见的ActiveX控件(与页面背景颜色相同),没有按钮或视觉反馈,它通过JavaScript和CSS完成了所有的GUI工作。

    编辑:弗兰克的建议是对的。 Here's the link on scripting events.

    我的策略是,当我想在浏览器中强制更新时,调用一个名为MyUpdate的C++函数(它实现了IConnectionPoint)。

    (此外,我确保在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
    }
    
    推荐文章