2011-06-05 38 views
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); 
} 
+0

更新:在線發現了關於flash對象和隱藏元素的幾個討論。通過在屏幕上和屏幕之間移動元素來修復第二個問題,而不是隱藏和顯示,並堅持一個對象實例。然而,第一個錯誤「this.media.setSrc不是函數」在第一次調用該函數時仍然會觸發,即使MP3已按預期加載和播放。 – Glen 2011-06-07 17:01:09

回答

0

您還需要添加「flashmediaelement.swf」。

相關問題