Javascript Windows Media Player是否已死亡?JS无法访问';控件';?
所以。。。我工作的公司长期以来一直使用javascript包装器来控制正在播放的视频的位置 从历史上看,这是通过使用某种东西来实现的:Javascript Windows Media Player是否已死亡?JS无法访问';控件';?,javascript,windows-media-player,Javascript,Windows Media Player,所以。。。我工作的公司长期以来一直使用javascript包装器来控制正在播放的视频的位置 从历史上看,这是通过使用某种东西来实现的: function loadMovie(movieIndex, moviePosition) { if ( top.mediaFrame.document.MediaPlayer.URL != movieArray[movieIndex]) { top.mediaFrame.document.MediaPlayer.URL = mo
function loadMovie(movieIndex, moviePosition)
{
if ( top.mediaFrame.document.MediaPlayer.URL != movieArray[movieIndex])
{
top.mediaFrame.document.MediaPlayer.URL = movieArray[movieIndex];
}
top.mediaFrame.document.MediaPlayer.controls.currentPosition = moviePosition;
top.mediaFrame.document.MediaPlayer.controls.play();
return false;
}
// I've tried .controls.currentPosition And .Controls.currentPosition to no avail.
其中“MediaPlayer”对象如下所示:
<OBJECT id="MediaPlayer" width="440" height="360" CLASSID="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" type="application/x-oleobject">
<param name="URL" value="/images/logo.png">
<param name="rate" value="1">
<param name="balance" value="0">
<param name="currentPosition" value="0">
<param name="defaultFrame" value>
<param name="playCount" value="1">
<param name="autoStart" value="-1">
<param name="currentMarker" value="0">
<param name="invokeURLs" value="-1">
<param name="baseURL" value>
<param name="volume" value="50">
<param name="mute" value="0">
<param name="uiMode" value="full">
<param name="stretchToFit" value="0">
<param name="windowlessVideo" value="0">
<param name="enabled" value="-1">
<param name="enableContextMenu" value="-1">
<param name="fullScreen" value="0">
<param name="SAMIStyle" value>
<param name="SAMILang" value>
<param name="SAMIFilename" value>
<param name="captioningID" value>
<param name="enableErrorDialogs" value="0">
<param name="_cx" value="10451">
<param name="_cy" value="10583">
<embed TYPE="application/x-mplayer2" SRC="/images/logo.png" NAME="MediaPlayer" WIDTH="440" HEIGHT="360" autostart="1" showcontrols="1">
</object>
根据对象模型引用,这应该是可行的。根据历史记录,这应该是有效的-直到。。。最近。如果有人知道为什么这会像在每个浏览器中一样“突然”停止工作,但我很想知道它是什么
我知道这种方法已被严重弃用,但我无法摆脱它,因为我工作的公司有数万小时的WMV格式视频,尽管浏览器对WMV的支持正在迅速消失
在JSFiddle开始协作(谢谢@Bart)
错误告诉您的是,虽然似乎定义了
MediaPlayer
,但没有定义MediaPlayer.Controls
实际上,根据Player
的说法,对象具有controls
类型的controls
属性。你应该这样写
top.mediaFrame.document.MediaPlayer.controls.currentPosition = moviePosition;
top.mediaFrame.document.MediaPlayer.controls.play();
我不认为是媒体播放器的问题 您的JavaScript假定媒体播放器始终由对象标记加载,并且仅通过对象标记的id引用它 如果媒体播放器实际上是由嵌入标记加载的,JavaScript将不会访问它 您需要为嵌入标记提供一个显式id,如果对象标记实际上不包含有效的媒体播放器,则需要找到嵌入标记 比如:
var player = top.mediaFrame.document.getElementById('MediaPlayer);
if (! player || ! player.controls)
{
player = top.mediaFrame.document.getElementById('altMediaPlayer')
}
然后
应该这样做。考虑使用HTML5而不是依赖插件。如果你在@Dave Newton决定删除我的评论之前读过我的原始帖子,你会注意到我无意立即离开(这真的不是一个选项),但是感谢您的建议。错误似乎表明,当
MediaPlayer
存在时,MediaPlayer.Controls
不存在。您确定它不是MediaPlayer。控件吗?在javascript中,属性通常是小写的。再说一遍,我不知道API,所以我可能是错的;对象模型引用声明它是大写的。根据控件
应该是小写的。你在引用哪个网站?@DigitalJedi805你还收到同样的错误吗?net是的,每个大小写组合都会产生相同的结果。只需在JSFIDLE中运行它,就会得到相同的结果@DigitalJedic805我刚刚在本地试用过,并且document.MediaPlayer.controls.currentPosition=moviePosition代码>没有错误…@DigitalJedi805啊,没有注意到。嗯,我的其他浏览器没有WMP插件,而是使用VLC媒体播放器插件(毫无疑问,它使用了不同的API)。事实上,在chrome中使用WMP已经不可能了,这可能是你的问题吧?
var player = top.mediaFrame.document.getElementById('MediaPlayer);
if (! player || ! player.controls)
{
player = top.mediaFrame.document.getElementById('altMediaPlayer')
}
<embed id = 'altMediaPlayer' TYPE="application/x-mplayer2" SRC="/images/logo.png" NAME="MediaPlayer" WIDTH="440" HEIGHT="360" autostart="1" showcontrols="1">