【发布时间】:2011-07-05 02:40:50
【问题描述】:
我已经通过 Internet Explorer 中的 HTML <option> 元素嵌入了一个 ActiveX 控件,它可以播放来自 Cisco 视频服务器的视频。
为了让播放器播放,我为 ActiveX 控件的 onPlayerLoaded 事件编写了一个回调函数。
我的代码在 IE 7 - 9 中工作,但仅在我使用 Microsoft 专有的 attachEvent 函数时。
JavaScript 示例:
if(this.axClient.attachEvent)
{ this.axClient.attachEvent("onPlayerLoaded", onPlayerLoadedEventHandler); }
我心中的标准纳粹真的很想使用 addEventListener 而不是这样......
if(this.axClient.addEventListener)
{ this.axClient.addEventListener("onPlayerLoaded", onPlayerLoadedEventHandler, false); }
else if(this.axClient.attachEvent)
{ this.axClient.attachEvent("onPlayerLoaded", onPlayerLoadedEventHandler); }
(从IE 9开始,支持addEventListener。)
不幸的是,当我使用 addEventListener 时,回调函数永远不会被调用。
我没有太多使用 ActiveX 控件的经验,所以我假设我可能会遗漏一些关于它们的细微差别。
鉴于 ActiveX 是 Microsoft 的专有技术,我们是否应该继续使用 attachEvent 而不是 addEventListener? (ActiveX 中是否有一些固有的东西迫使我们继续使用 attachEvent?)
或者这是 AciveX 控件的发布者可以解决的问题吗? (例如,是否有针对 ActiveX 的新实践来利用 IE 9 更符合标准的特性。)
或者鉴于 ActiveX 是专有的,我是否应该不必太担心它们的标准...? ;)
【问题讨论】:
-
我不知道这是否重要,因为我不擅长编写脚本,但我注意到当您使用 addEventListener 时,“onPlayerloaded”中有一个小写“L”和一个大写“ L' 使用 attachEvent "onPlayerLoaded" 时。
-
@Maurizo 这只是我的问题中的一个错字,我刚刚更正了。在 JavaScript 中 会 很重要,因为该语言是区分大小写的。好眼力!
标签: javascript activex internet-explorer-9 web-standards