【问题标题】:Chrome Extension Event Page w/ Audio Never Stops带音频的 Chrome 扩展事件页面永不停止
【发布时间】:2014-06-24 00:11:04
【问题描述】:

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

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 文件并且没有正确关闭它,所以事件页面仍然认为它是活动的,因为打开了套接字,但这只是目前的猜测......

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2013-01-26
      • 2015-02-23
      • 1970-01-01
      相关资源
      最近更新 更多