私はMSDNでFirefoxでWMPを使用することについての良い記事を見つけました。
MSDNの記事に基づいて、試行錯誤を繰り返した結果、条件付きコメントやネストされた「EMBED/OBJECT」タグを使用するよりもJavaScriptを使用する方が優れていることがわかりました。
与えられた引数に基づいて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、Safari5でコードをテストしました。