【问题标题】:MP3 Flash Fallback on Opera & FireFox using MediaElement.jsOpera 和 FireFox 上使用 MediaElement.js 的 MP3 Flash 后备
【发布时间】:2011-06-05 18:25:22
【问题描述】:

我正在尝试将 mediaelement.js 添加到我的网站,以便为特定页面上的任何 MP3 链接提供单个播放器。该设计在 IE 9 和 Chrome 11(支持 HTML5 MP3)上运行良好,但在 Opera 11 和 FireFox 4 上存在闪退问题。单击页面上的任何 MP3 链接使用 .setSrc( )媒体元素播放器的方法改变播放器的来源,但是在Opera和FF中,第一次调用这个方法,返回错误“this.media.setSrc is not a function强>”。之后对该函数的任何调用都可以正常工作。

另外一个问题是包含播放器的元素被隐藏“display:none”后再次显示,调用.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 is not a function”仍然会在第一次调用该函数时触发,即使 MP3 已按预期加载和播放。

标签: javascript jquery flash mediaelement.js


【解决方案1】:

您还需要添加“flashmediaelement.swf”。

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多