以前使用Windows Media Player 9时查看过sdk并没有发现ff可以通过js可以控制Media Player,今天翻看微软的msdn里的Windows Media Player 11 SDK发现firefox居然也能使用js控制Media Player了。看
Using the Windows Media Player Control with Firefox
看表格:
PARAM name | Internet | Firefox with mime type | Firefox with any |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | yes | |
yes | no | no | |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | no | |
fileName | no | yes | yes |
yes | no | no | |
yes | no | no | |
yes | yes | yes | |
yes | yes | no | |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | yes | |
SRC | no | yes | yes |
yes | yes | no | |
yes | yes | yes | |
yes | yes | yes | |
yes | yes | yes |
出处http://msdn.microsoft.com/en-us/library/bb614511(VS.85).aspx
经过本人测试果然ff可以基本和ie一样控制mp,效果也一样。不过在ff下要安装插件。
在sdk的Using the invokeURLs Property in a Web Page Displayed by Firefox 提供了一个简单的例子
<HTML>
<BODY OnLoad="Initialize()">
<SCRIPT type="text/javascript">
document.write('<OBJECT id="Player"');
if(-1 != navigator.userAgent.indexOf("MSIE"))
{
document.write(' classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6"');
}
else if(-1 != navigator.userAgent.indexOf("Firefox"))
{
document.write(' type="application/x-ms-wmp"');
}
document.write(' width=300 height=200>');
document.write('<PARAM name="autoStart" value="false"/>');
document.write('<PARAM name="url" value="c://MediaFiles//Glass.wmv"/>');
document.write('</OBJECT>');
</SCRIPT>
<SCRIPT>
function Initialize()
{
Player.settings.invokeURLs = false;
Player.controls.play();
}
</SCRIPT>
</BODY>
</HTML>
当用ff打开这网页如果没有插件ff就会提示安装。
你有兴趣的话也可以去测试一下,结合这个sdk完全可以制作一个自己的ff和ie兼容网页播放器。
并且本人测试同样在chrome上也可以兼容,但在控制音量上有些小问题。而Safari下可以运行但兼容不太好,有很大问题,Opera就根本不行了。
另外提示一下在ie下可以通过
<script language="jscript" for="mpObj" event=playStateChange(NewState)>myPlayer.playerStateChange(myPlayer, NewState);</script>
<script language="jscript" for="mpObj" event=error()>myPlayer.error();</script>
<script language="jscript" for="mpObj" event=Buffering(state)></script>
<script language="jscript" for="mpObj" event=currentItemChange()></script>
<script language="jscript" for="mpObj" event="currentPlaylistChange(change)"></script>
去检测播放器的状态改变而firefox不支持"jscript"因此这些代码是不能使用的。但可以通过变通方法setInterval去轮询播放器状态解决。
下图为firefox下的情况
下图为chrome下的情况