Chrome扩展事件页面带音频永不停止

时间:2014-06-24 00:11:05

标签: javascript google-chrome google-chrome-extension html5-audio

我的Chrome扩展程序包含一个弹出窗口和一个在后台运行的事件页面。 Event页面非常简单:它注册了一个onMessage侦听器,当调用该侦听器时,它会创建一个Audio对象,并以远程.mp3文件作为源并播放它。当“事件”页面收到另一条消息并播放音频时,它会暂停音频并停止播放。

var audio;

chrome.runtime.onMessage.addListener( function(message, sender, sendResponse) {
    if (audio && !audio.paused) {
        audio.pause();
        audio.src = '';
        audio.load();
        audio = null;
        sendResponse({});
    } else {
        audio = new Audio("http://path/to/audio/file.mp3");
        audio.play();
        sendResponse({});
    }
});

弹出式跳转只是向“事件”页面发送消息以开始播放音频。当“事件”页面收到第二条消息时,音频播放正常并停止播放,但问题是当“事件”页面收到第二条消息,暂停并将音频源设置为空String时,事件页面永远不会消失了。它会像Background页面一样在后台持续存在,并且永远不会进入它的非活动状态。

我尝试像这样创建audio var,看看是否使用Audio构造函数导致了问题:

audio = document.createElement('audio');

但这并没有任何不同。然后,我尝试将preload属性设置为none而不是auto,但无济于事。我想知道Chrome是否正在打开一个套接字来加载mp3文件并且没有正确关闭它,所以Event页面仍然认为它是活动的,因为打开套接字,但这只是猜测...

我还需要做些什么来卸载"音频,以便当音频不播放时,事件页面将进入非活动状态?

1 个答案:

答案 0 :(得分:2)

将Chrome升级到版本36后,在卸载Audio元素后,“事件”页面将变为非活动状态。