【问题标题】:Keep a value the same on chrome extension在 chrome 扩展上保持相同的值
【发布时间】:2012-12-26 13:04:40
【问题描述】:

你好

我的扩展程序出现了一些问题,我制作了一个可以工作的收音机播放器,但我添加了一个音量控制,例如,当您将滑块滑动到音量的 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>

script.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") + "%");
    });

background.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>

提前致谢:)

【问题讨论】:

    标签: jquery html google-chrome audio google-chrome-extension


    【解决方案1】:

    直接从后台页面的&lt;audio&gt;元素读取实际音量,而不是滑块上不相关的值:

    $("#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;
    

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

    【讨论】:

    • 感谢您的回复。您的代码部分工作,值保持不变,但它显示值 +1,就像如果您将滑块设置为 50%,关闭并打开弹出窗口,它将显示 51%,并且滑块总是回到满,它没有不能保持在 50% .. 我整晚都在想办法解决这个问题,但仍然找不到怎么做:(
    • @NexsHax 你能举个失败的例子吗,最好是jsfiddle.net
    • 这是您第一次打开弹出窗口并拖动音量的时候:link --- 这是您关闭弹出窗口然后再次打开它的时候:link ---如您所见,值为-1,滑块已完成..
    • @NexsHax 滑块的大小可以通过将value: 100 配置属性替换为更合理的属性来轻松解决,例如value: +volume(假设音量是有效数字)。 16->17 没看到相关代码不知道怎么解决,请给它设置一个jsfiddle.net
    • 这是 jsfiddle:link --- 我不确定是否必须删除 bg 页面代码和相关代码,所以我保持原样..
    【解决方案2】:

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

    value: $('#slider')[0].volume,
    

    【讨论】:

    • 不工作:/滑块为0,音量为100,当我关闭并打开弹出窗口时,滑块回到0..
    猜你喜欢
    • 1970-01-01
    • 2014-02-27
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2019-09-12
    • 1970-01-01
    相关资源
    最近更新 更多