javascript - Windows Media Player 死了吗? JS无法访问 'Controls'?

标签 javascript windows-media-player

所以...我工作的公司长期以来一直使用 JavaScript 包装器来控制正在播放的视频的位置。

从历史上看,这是通过使用某些东西来实现的:

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>

具体而言,我遇到的问题是,任何设置“MediaPlayer”对象的“Controls”成员的“currentPosition”的尝试都会产生以下结果:

Uncaught TypeError: Cannot set property 'currentPosition' of undefined

根据对象模型引用,这应该可行。根据历史记载,这应该有效——直到……最近。如果有人知道为什么这会“突然”停止工作,就像在除IE之外的每个浏览器中一样,我很有兴趣知道它是什么。

我知道这种方法已被严重弃用,但我没有能力放弃它,因为我工作的公司拥有数万小时的 WMV 格式视频,尽管浏览器对 WMV 的支持正在减弱快点。

在 JSFiddle 开始合作(感谢@Bart)。

http://jsfiddle.net/#&togetherjs=DvKifcxlR7

最佳答案

该错误告诉您,虽然 MediaPlayer 似乎已定义,但 MediaPlayer.Controls 并未定义。

确实,根据http://msdn.microsoft.com/en-us/library/windows/desktop/dd562656(v=vs.85).aspx Player 对象具有 Controls 类型的 controls 属性。因此你应该写

top.mediaFrame.document.MediaPlayer.controls.currentPosition = moviePosition;
top.mediaFrame.document.MediaPlayer.controls.play();

关于javascript - Windows Media Player 死了吗? JS无法访问 'Controls'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24188819/

相关文章:

javascript - 在此之后我如何制作另一种颜色的动画?

c# - 如何从 UWP MediaPlayer 获取流元数据?

c# - 如何更改 System.Windows.Media.MediaPlayer() 中的音量

javascript - 使用切片();实现算术运算的方法

javascript - 我编写了一个简单的粒子过滤器,它无法处理超过数百个粒子。我不知道为什么

javascript - 如何在CheckBox字段React js上的onChange函数中调用api

c# - Windows Phone 7 和 MP4

javascript - 如何在 bool 值变化时运行函数?

vb.net - 无法在 Visual Basic 中调用 WMP 的controls.play() 函数

java - 如何在java中与Windows Media Player交互