0
我正在嘗試將mediaelement.js添加到我的網站,以便爲特定頁面上的任何MP3鏈接呈現單個播放器。該設計對於IE 9和Chrome 11(其具有HTML5 MP3支持)工作正常,但是在Opera 11和FireFox 4上存在閃回問題。單擊頁面上的任何MP3鏈接使用.setSrc()媒體元素播放器更改播放器源的方法,但在Opera和FF中,第一次調用此方法時,將返回錯誤「this.media.setSrc不是函數」。任何對該功能的調用都可以正常工作。使用MediaElement.js在Opera和FireFox上使用MP3 Flash Fallback
另一個問題是包含播放器中的元件被隱藏後「顯示:無」,然後再次顯示,調用.pause()函數會產生錯誤「this.pluginApi.pauseMedia不是一個函數」 。在引發錯誤之後,後續調用將正常工作,直到元素被隱藏並再次顯示。
這裏是相關的代碼,任何幫助將非常感激。
<script type="text/javascript" src="../js/mejs/mediaelement-and-player.min.js"></script>
<script type="text/javascript" src="../js/media.js"></script>
<div id="mediaPlayerFooter" class="mediaPlayerWrapper">
<div id="mediaPlayer">
<audio id="mp3Player" src="mp3/null.mp3" autoplay="autoplay" type="audio/mp3"></audio>
</div>
<div id="closeButtonWrapper"><p><a id="closeButton" href="#close">Close</a></p></div>
</div>
$(function() {
// Show the footer, load the MP3 file, and play.
$("a[href*='.mp3']").click(function(e) {
e.preventDefault();
PlayMP3($(this).prop('href'));
});
// Stop the MP3 playback and close the footer.
$('#closeButton').click(function(e) {
e.preventDefault();
ClosePlayer();
});
});
function CreatePlayer() {
var player = new MediaElementPlayer('#mp3Player',{
audioWidth: 250,
startVolume: 1.0
});
return player;
}
function PlayMP3(sourceUrl){
$('#mediaPlayerFooter').slideDown(750);
var player = CreatePlayer();
try {
player.pause();
player.setSrc(sourceUrl);
player.load();
player.play();
}
catch(err)
{
txt="There was an error loading the MP3. ";
txt+="Error message: " + err.message;
console.log(txt);
}
}
function ClosePlayer(){
var player = CreatePlayer();
player.pause();
$('#mediaPlayerFooter').slideUp(750);
}
更新:在線發現了關於flash對象和隱藏元素的幾個討論。通過在屏幕上和屏幕之間移動元素來修復第二個問題,而不是隱藏和顯示,並堅持一個對象實例。然而,第一個錯誤「this.media.setSrc不是函數」在第一次調用該函數時仍然會觸發,即使MP3已按預期加載和播放。 – Glen 2011-06-07 17:01:09