0

你好

我的扩展有一些问题,我制作了一个可以工作的收音机播放器,但是我添加了一个音量控制,例如,当您将滑块滑动到音量的 25% 时,音频的音量会降低到 25% ,但是当您关闭弹出窗口然后再次打开弹出窗口时,滑块为 100%,音频音量为 25%。

所以我想做的是:
将滑块保持在弹出窗口关闭时的值,所以当用户再次打开弹出窗口时,滑块的值仍然是 25% 而不是回到 100%


代码:
popup.html:

<a class="playback" href="#">
<img id="play" src="img/play.png" />
</a>

<div class="mutebtns">
<a id="mute-bt" href="#">
<img id="mute" rel='tipsy' src="img/unmuted.png" title="Mute" />
</a>
</div>

<div stle="display:inline;">Volume:<span id="val"></span></div>
<div id="slider"></div>

脚本.js:

var bgPage = chrome.extension.getBackgroundPage();

    // Volume control
    $(function() {
    $("#slider").slider({
    animate: "true",
    value : 100,
    step  : 1,
    range : 'min',
    min   : 0,
    max   : 100,
    slide : function( event, ui ){
      var value = $("#slider").slider("value");
        bgPage.$("#audio_player")[0].volume = parseFloat(value / 100);
      $("#val").html(ui.value + "%");
    }
    });
        $("#val").html($("#slider").slider("value") + "%");
    });

背景.html:

<div id="audiocontainer">
    <audio id="audio_player" src="http://85.25.118.16:7502/;livestream.mp3" width="320" height="80"></audio>
    <div id="slider"></div>
</div>

提前致谢 :)

4

2 回答 2

1

直接从后台页面的元素中读取实际音量,<audio>而不是在滑块上不相关的值:

$("#val").text(bgPage.$("#audio_player")[0].volume * 100 + "%");

如果要保留设置,请考虑将值保存在localStorage

  slide : function( event, ui ){
    var value = $("#slider").slider("value");
    bgPage.$("#audio_player")[0].volume = parseFloat(value / 100);
    localStorage.setItem('volume', value);
    $("#val").html(ui.value + "%");
  }
});
var volume = localStorage.getItem('volume');
if (volume == null) {
    // Not saved yet, use default value
    volume = 100; // 100%
}
$("#val").text(volume + '%');

// And in the background page:
// After creating the <audio> element:
var volume = localStorage.getItem('volume');
if (volume == null) {
    // Not saved yet, use default value
    volume = 100; // 100%
}
audioElement.volume = volume / 100;

我建议为它创建一个函数,而不是重复相同的代码来获取卷。这样可以更轻松地维护您的代码。

于 2012-12-26T13:42:49.043 回答
0

不要将滑块的值设置为 100,而是将其设置为当前音量。

value: $('#slider')[0].volume,
于 2012-12-26T13:07:16.647 回答