【问题标题】:Active X Control JavaScriptActive X 控件 JavaScript
【发布时间】:2017-02-16 05:50:21
【问题描述】:

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

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

【问题讨论】:

    标签: javascript activex


    【解决方案1】:

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

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

    对于事件,您需要了解Connection Points

    【讨论】:

      【解决方案2】:

      是的!您可以在 C++/ActiveX 领域引发事件,这使 JavaScript 代码运行事件处理函数。我什至能够制作一个完全不可见的 ActiveX 控件(与页面背景颜色相同),没有按钮或视觉反馈,它的所有 GUI 都通过 JavaScript 和 CSS 工作。

      edit:弗兰克的建议是正确的。 Here's the link on scripting events.

      当我想在浏览器中强制更新时,我的策略是调用一个名为 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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 2015-09-10
        • 1970-01-01
        相关资源
        最近更新 更多