当前位置:Gxlcms > JavaScript > 激活ActiveX控件_javascript技巧

激活ActiveX控件_javascript技巧

时间:2021-07-01 10:21:17 帮助过:18人阅读

激活 ActiveX 控件

发布日期: 2006-3-29 | 更新日期: 2006-3-29

Internet 开发索引

用户不能与 APPLET、EMBED 或 OBJECT 元素加载的 Microsoft ActiveX 控件直接交互。用户激活这些控件的用户界面后才可以与这些控件交互。本文介绍 Microsoft Internet Explorer 如何处理 ActiveX 控件,显示如何加载 ActiveX 控件才能激活它们的界面,还描述这种行为对辅助工具和宿主 WebBrowser 控件的应用程序的影响。

本主题包含以下部分。

*

本页内容

了解控件激活 了解控件激活
外部加载交互控件 外部加载交互控件
以编程方式确定控件是否未激活 以编程方式确定控件是否未激活
辅助影响 辅助影响
WebBrowser 控件影响 WebBrowser 控件影响
附录 A:未激活控件所阻止的 DHTML 事件 附录 A:未激活控件所阻止的 DHTML 事件

有关该更新所影响平台的其他信息,请参见Internet Explorer ActiveX 更新。

了解控件激活

交互控件 是提供用户界面的 ActiveX 控件。当 Web 页使用 APPLETEMBEDOBJECT 元素加载某个 ActiveX 控件时,该控件的用户界面在用户激活它之前一直是阻止的。如果一个页面使用这些元素加载多个控件,则每个交互控件必须单独激活。

如果某个控件未激活,就会出现以下结果。

与用户交互相关的动态 HTML (DHTML) 事件(如 onblur 和 onclick)被阻止。附录 A 列出控件未激活时受阻的 DHTML 事件。

该控件不响应键盘或鼠标生成的窗口消息,如 WM_CLICK、WM_KEYPRESS 等。

覆盖窗口(创建于控件的 OLE 站点)防止键盘和鼠标消息到达未激活的控件。

创建了一个未激活控件后,Internet Explorer 使用不同技术防止键盘或鼠标窗口消息到达该控件。如果未激活控件是一个有窗口的控件(如 HTML Help 控件),Internet Explorer 使用 EnableWindow 函数禁用这个未激活控件的窗口。当用户激活一个有窗口的控件时,该函数激活禁用的窗口。如果未激活控件是一个无窗口控件(如 Office Web 组件),则该控件的容器会筛选键盘和鼠标消息。

如果某个控件未激活,它不响应用户输入,但执行与交互无关的操作。例如,如果您打开一个使用 Microsoft Windows 媒体播放器播放音乐文件的 Web 页,该页加载后才会播放音乐。只有该控件的用户界面激活后,您才能与 Windows 媒体播放器交互,如下图所示。


虽然未激活控件不响应任何直接的用户交互;但它们响应脚本命令。

要激活一个交互控件,可以单击该控件,也可以使用 Tab 键将焦点设置在该控件上,然后按 SPACEBAR 或 ENTER 键。从外部脚本加载的交互控件无需激活即可立即响应用户交互。

某些有窗口的控件使用 Windows API 函数(如 GetKeyState 和 GetCursorPos)确定键盘和鼠标的状态,然后响应函数结果。仅对于这些控件而言,先出现一个提示,然后才会在 Internet Explorer 中运行控件。要运行控件,用户需要先单击消息窗口中的按钮,然后页面才会加载。加载后,控件不需要激活。目前,以下控件具有该行为,但供应商正在继续研发没有该行为的新控件。

Virtools™Web Player from Virtools SA

Macromedia Shockwave Player™from Adobe Systems Inc.

QuickTime™from Apple Computer, Inc.

从外部脚本文件加载时,这些控件不显示提示。

下图显示提示对话框。


返回页首返回页首

外部加载交互控件

要创建加载交互控件(这些控件立即响应用户输入)的 Web 页,使用 Microsoft JScript 从外部脚本文件加载控件。您不能编写与主 HTML 页内联的脚本元素来从外部加载控件。如果脚本是以编程方式内联编写的(例如,用 writeln 函数),加载的控件就像由 HTML 文档本身加载的一样,需要激活。要确保控件在加载后是交互的,使用以下任一技术。

下面的示例使用 document.write 动态加载控件。

// HTML File

 
  PRE html>< < body>>
// createElementExplicit.js
var myObject = document.createElement('object');
DivID.appendChild(myObject);
myObject.width = "200";
myObject.height = "100";
myObject.classid= "clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"; 
myObject.URL = "example.wmv";
myObject.uiMode = "none" ;

下一示例使用 innerHTML 和 JScript 函数加载 ActiveX 控件,同时指定参数值。

// HTML File