我在 MSDN 上找到了一篇关于在 Firefox 中使用 WMP的好文章。
根据 MSDN 的文章,经过反复试验,我发现使用 JavaScript 比使用条件注释或嵌套的“EMBED/OBJECT”标签要好。
我创建了一个基于给定参数生成 WMP 对象的 JS 函数:
<script type="text/javascript">
function generateWindowsMediaPlayer(
holderId, // String
height, // Number
width, // Number
videoUrl // String
// you can declare more arguments for more flexibility
) {
var holder = document.getElementById(holderId);
var player = '<object ';
player += 'height="' + height.toString() + '" ';
player += 'width="' + width.toString() + '" ';
videoUrl = encodeURI(videoUrl); // Encode for special characters
if (navigator.userAgent.indexOf("MSIE") < 0) {
// Chrome, Firefox, Opera, Safari
//player += 'type="application/x-ms-wmp" '; //Old Edition
player += 'type="video/x-ms-wmp" '; //New Edition, suggested by MNRSullivan (Read Comments)
player += 'data="' + videoUrl + '" >';
}
else {
// Internet Explorer
player += 'classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" >';
player += '<param name="url" value="' + videoUrl + '" />';
}
player += '<param name="autoStart" value="false" />';
player += '<param name="playCount" value="1" />';
player += '</object>';
holder.innerHTML = player;
}
</script>
然后我通过编写一些标记和内联 JS 来使用该函数,如下所示:
<div id='wmpHolder'></div>
<script type="text/javascript">
window.addEventListener('load', generateWindowsMediaPlayer('wmpHolder', 240, 320, 'http://mysite.com/path/video.ext'));
</script>
您可以使用jQuery.ready代替窗口加载事件来使代码更加向后兼容和跨浏览器。
我在 Windows 7/8 上测试了 IE 9-10、Chrome 27、Firefox 21、Opera 12 和 Safari 5 上的代码。