請注意jquery.audiocontrol.js中的這兩行。
91. addListeners(window);
92. audio.playFlash(currentTrack + options.defaultMediaExtension);
在addListeners被添加功能三個事件處理程序這意味着對HTML5的音頻,但在這裏窗口被傳遞到該函數。結果事件監聽器被添加到窗口中。然後audio.playFlash會導致錯誤,因爲玩家沒有像您提到的那樣準備好。但是這個錯誤調用了onError函數,它顯示了爲html5audio元素編寫的錯誤消息。
編輯: 我探索的代碼進一步和發現,那是因爲在索引頁面下面的代碼發生,第12行
$(document).ready(function(){
$(this).audiocontrol();
$('.audioButton').click();
});
在立即播放該音頻點擊事件的結果觸發,這將只適用於html5音頻。嵌入swf需要幾秒鐘,因爲swfobject.js是動態加載的。因此,此代碼應該像
$(document).ready(function(){
$(this).audiocontrol({ readyCallback:function(){ $('.audioButton').click(); } });
});
和jquery.audiocontrol.js,管線125增加(對HTML5音頻)後
if(options.readyCallback){
options.readyCallback.call();
}
和在管線136中,將它作爲的embedSWF的回調函數。的embedSWF的最後一個參數是當SWF準備將被調用的回調函數,
swfobject.embedSWF(options.flashAudioPlayerPath, options.playerContainer,
"0", "0", "9.0.0", "swf/expressInstall.swf", false, false,
{id:options.flashObjectID}, options.readyCallback);
編輯: 不知道爲什麼外部接口功能甚至準備回調後不可用。我懷疑它是因爲0寬度和0高度。無論如何,給出如下給出的函數loadFlash(第141行)解決了這個問題。它的工作現在。
function loadFlash() {
swfobject.embedSWF(options.flashAudioPlayerPath, options.playerContainer,
"1", "1", "9.0.0", "swf/expressInstall.swf", false, false,
{id:options.flashObjectID},
function(){
if(options.readyCallback){
setTimeout(options.readyCallback, 150);
}
});
}
感謝二極管,但是當我註釋掉這兩條線按鈕不會在所有的工作......其實都需要切換播放按鈕 – 2011-12-19 23:28:21
的那些事件。我用正確的解決方案修改了我的答案。 – Diode 2011-12-20 02:25:59
Yikes,我錯過了什麼?:http://carolineelisa.com/audiotest3/ – 2011-12-20 04:12:28