我有一個網頁index.php
其中包含一個鏈接到sound.php
。在sound.php
上,使用SoundJS播放聲音。離開帶有SoundJS的網頁會導致谷歌瀏覽器崩潰
當我從導航到sound.php
index.php
,谷歌Chrome通常(但並不總是)顯示錯誤消息( 「喔唷,崩潰啦!」): https://support.google.com/chrome/answer/95669?hl=en
我使用Chrome 40爲Mac OS。無論我使用鏈接還是瀏覽器的後退按鈕都無關緊要。
這裏是我的代碼:
sound.php
稱目前正使用SoundJS一個JS函數:
<script type="text/javascript">
var int = [0, 7];
prepareAudio();
</script>
當我刪除此代碼,瀏覽器不會再崩潰。
prepareAudio()是在一個外部文件:
function prepareAudio() {
// Try WebAudio or HTMLAudio
createjs.Sound.initializeDefaultPlugins();
// Try flash otherwise
if (!createjs.Sound.isReady()) {
// Flash plug-in is not default
createjs.FlashPlugin.swfPath = "../audio/";
// Enable flash support
$.getScript("../../js/flashplugin-0.6.0.min.js");
// Prefer WebAudio over HTMLAudio. Prefer HTMLAudio over Flash.
createjs.Sound.registerPlugins([createjs.WebAudioPlugin, createjs.HTMLAudioPlugin, createjs.FlashPlugin]);
}
// Get audio files
var audioPath = "../audio/";
var manifest = [];
for (var i = 0; i< audioFiles.length; i++)
manifest.push({id: audioFiles[i], src: audioPath + audioFiles[i] + ".ogg"});
// Play audio
var queue = new createjs.LoadQueue();
createjs.Sound.alternateExtensions = ["mp3"];
queue.installPlugin(createjs.Sound);
queue.addEventListener("complete", function() {playTask(int);});
queue.loadManifest(manifest);
createjs.Sound.registerSounds(manifest, audioPath);
}
這裏也有一些涉及到更多的代碼。我播放聲音使用
createjs.Sound.play(mySound);
在Chrome和其他瀏覽器中音頻播放效果不錯。
這聽起來像一個問題,更與Chrome的處理您的聲音設置。 「Aw,Snap!」就像是Chrome中的錯誤並且認真對待,因此請在Chromium bug跟蹤器中提交錯誤報告。 – apscience 2015-02-08 23:11:31
我能夠使用[SoundJS音頻測試套件](http://www.createjs.com/#!/Demos/SoundJS/Audio-Test-Suite)在Chrome 40 OSX中始終如一地通過啓動一些循環聲音來重現此操作然後點擊後退按鈕。雖然重新啓動Chrome後,我不能再生產。這表明它可能與記憶有關。也許Chrome for WebAudio的GC有一個崩潰錯誤?可能值得向他們提交一個錯誤。 – gskinner 2015-02-08 23:57:52
這似乎是在Chrome 40.0.2214.115的最新版本中解決的問題 – OJay 2015-02-19 18:33:05