激活 ActiveX 控件(2)

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

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

// HTML File <html> <body leftmargin=0 topmargin=0 scroll=no> <script src="https://www.jb51.net/Embed.js"></script> </body> </html> // embed.js document.write(' <embed src="https://www.jb51.net/examplecontrol">')

外部脚本文件也可以修改某个元素的 outerHTML 属性来达到同样的效果,如下例所示。

// HTML File <html> <body> <div> <script src="https://www.jb51.net/embedControlOuterHTML.js"></script> </div> </body> </html> // embedControlOuterHTML.js embedControlLocation.outerHTML = '<embed src="https://www.jb51.net/examplecontrol">';

下一示例使用 document.createElement 加载一个使用 OBJECT 元素的 ActiveX 控件。

重要 使用 createElement 向 Web 页加载 Object 元素或 Embed 元素时,请小心创建该元素,初始化其属性,将该元素添加到页面的 DOM,然后再创建要由该新元素加载的 ActiveX 控件。有关详细信息,请参阅 createElement 文档。

// HTML File <html> <body> <div> <script src="https://www.jb51.net/createElementExplicit.js"></SCRIPT> 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 <html> <head> <script src="https://www.jb51.net/external_script.js" language="JScript"> </script> </head> <body> <div> This text will be replaced by the control </div> <script language="JScript"> CreateControl( "EXAMPLE_DIV_ID", "clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6", "EXAMPLE_OBJECT_ID", "600", "400", "example.wmv", "-1") </script> </body> </html> // external_script.js function CreateControl(DivID, CLSID, ObjectID, WIDTH, HEIGHT, URL, AUTOSTART) { var d = document.getElementById(DivID); d.innerHTML = '<object classid=' + CLSID + '> <param value=' + URL + '> <param value=' + AUTOSTART + '/>'; }

由于下一示例使用 writeln 函数将脚本插入原始的 HTML 文档,因此产生的控件需要激活。要加载一个无需激活的控件,请使用上述示例之一。

// HTML File <html> <body> <div> <script src="https://www.jb51.net/embedControl.js"></script> </div> </body> </html> // embedControl.js document.writeln('<script>'); document.write('document.writeln(\''); document.write( '<object classid = "clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" />'); document.write('\');'); document.writeln('</script>');

警告 如果在控制面板的“Internet 选项”的“高级”选项卡中不选“禁用脚本调试 (Internet Explorer)”选项,则使用这些技术创建的控件仍需激活。

以编程方式确定控件是否未激活

您不能使用 JScript 函数或服务器端脚本来确定某个控件是否为激活。宿主 Web 浏览器控件的应用程序不能确定某个控件是否为激活。

控件可以通过 DISPID_AMBIENT_UIDEAD 环境属性确定激活状态,该属性通过 IDispatch::Invoke 调用。该属性通过 IOleControl::OnAmbientPropertyChange 进行更改时,会通知实现 IOleControl 接口的控件。

辅助影响

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjjdyf.html