2012-12-26 48 views
0

你好 保持一個值在Chrome擴展

我有我的擴展的一些問題,我做了一個電臺播放器,其工作原理是一樣的,但我加了一個音量控制,以及比如當你滑動滑塊設置爲音量的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> 

感謝提前:)

回答

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; 

而不是重複獲取卷相同的代碼,我建議爲它創建一個函數。這使維護代碼變得更容易。

+0

感謝您的回覆。 您的代碼部分工作,值保持不變,但它顯示值+1,就像您將滑塊設置爲50%,關閉並打開彈出窗口,它將顯示51%,並且滑塊始終恢復爲滿,不會停留在50%..我一直想弄明白這整個晚上,仍然無法找到如何操作:( –

+0

@NexsHax你可以展示一個失敗的例子,最好在http:// jsfiddle .net /? –

+0

這是當您第一次打開彈出窗口並拖動音量時:[鏈接](http://i.imgur.com/3BA2b.png)--- 這就是當您關閉然後再打開它:[鏈接](http://i.imgur.com/RNSdl.png)--- 正如你所看到的值是-1和滑塊是完整的.. –

0

而不是設置滑塊的值100,把它目前的音量。

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

不工作:/滑塊在0,音量在100,當我關閉並打開彈出窗口時,滑塊回到0 .. –