Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chrome扩展事件页面w/音频永不停止_Javascript_Google Chrome_Google Chrome Extension_Html5 Audio - Fatal编程技术网

Javascript Chrome扩展事件页面w/音频永不停止

Javascript Chrome扩展事件页面w/音频永不停止,javascript,google-chrome,google-chrome-extension,html5-audio,Javascript,Google Chrome,Google Chrome Extension,Html5 Audio,我有一个Chrome扩展,它由一个弹出窗口和一个在后台运行的事件页面组成。事件页面非常简单:它注册一个onMessage侦听器,当调用该侦听器时,它创建一个Audio对象,其中一个远程.mp3文件作为源文件并播放它。当事件页面收到另一条消息且正在播放音频时,它会暂停音频并停止播放 var audio; chrome.runtime.onMessage.addListener( function(message, sender, sendResponse) { if (audio &am

我有一个Chrome扩展,它由一个弹出窗口和一个在后台运行的事件页面组成。事件页面非常简单:它注册一个
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({});
    }
});
弹出跳转只是向事件页面发送一条消息,开始播放音频。当事件页面接收到第二条消息时,音频播放正常并停止播放,但问题是,当事件页面接收到第二条消息时,暂停并将音频源设置为空
字符串
,事件页面永远不会消失。它将像
background
页面一样保留在后台,并且永远不会进入非活动状态

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

audio = document.createElement('audio');
但这并没有表现出任何不同。然后我尝试将
preload
属性设置为
none
,而不是
auto
,但没有成功。我想知道Chrome是否正在打开一个套接字来加载mp3文件,并且没有正确地关闭它,因此事件页面仍然认为它是活动的,因为打开了套接字,但这只是猜测而已


是否需要执行其他操作来“卸载”音频,以便在音频未播放时事件页面将进入非活动状态?

将Chrome升级到36版后,卸载音频元素后事件页面将处于非活动状态