0

Wrote a working code to enable / disable the sound, but do not know how to write to him cookie.

Please help me.

HTML

<div class="uk-icon-volume-up" id="js_playerMuted"></div>
<audio id="player" src="audio/thai.mp3" autoplay loop></audio>

jQuery

var audio = $('#player')[0];
audio.volume = 0.05;

$('#js_playerMuted').toggle(function(){
    $('#player')[0].pause();
    $('#js_playerMuted').css({'color': '#9D9A9A'});
    },
    function() {
    $('#player')[0].play();
    $('#js_playerMuted').css({'color': '#fff'});
}); 
kaluk
  • 53
  • 5
  • Welcome to Stackoverflow, kaluk. Please take one step backward and look at your question as if you were searching for help on how to save cookies? Does the title reflect this (no)? Have you [tried searching before](http://stackoverflow.com/search?q=cookie+set+[javascript]+is%3Aquestion) ([Set cookie and get cookie with JavaScript](http://stackoverflow.com/questions/14573223/set-cookie-and-get-cookie-with-javascript))? – try-catch-finally Dec 29 '14 at 01:44
  • I was looking for, but do not know how to apply to your code. Can you help? – kaluk Dec 29 '14 at 01:57
  • Do you want to save in cookies is player muted or isn't? – Nikolay 'Alagunto' Tkachenko Dec 29 '14 at 02:00

1 Answers1

1

Since you are using JQuery, you'll enjoy using JQuery Cookies (http://www.electrictoolbox.com/jquery-cookies/). Note that you will have to download plugin for that. You can do it there: https://github.com/carhartl/jquery-cookie/blob/master/src/jquery.cookie.js

If you don't want to download a plugin, you can use any another way to set and get cookies. This link can help you to choose: How do I create and read a value from cookie?

Using JQuery Cookies, you'll need to change your code like that:

var audio = $('#player')[0];
audio.volume = 0.05;

var isMuted = $.cookie('playerMuted'); // Receive stored cookie
if(isMuted) // If should be muted, stop the player
{
  $('#player')[0].pause();
  $('#js_playerMuted').css({'color': '#9D9A9A'});
}

// This function will be called when you click on $('#js_playerMuted')
function toggleMute() 
{
  if(isMuted) // If player is muted, then unmute it
  {
    $('#player')[0].play();
    $('#js_playerMuted').css({'color': '#fff'});
    isMuted = false;
  } else // Else mute it
  {
    $('#player')[0].pause();
    $('#js_playerMuted').css({'color': '#9D9A9A'});
    isMuted = true;
  }
  $.cookie('playerMuted', isMuted); // Save current state of player
}

$('#js_playerMuted').click(toggleMute);
Community
  • 1
  • 1
  • Thank you, it works! How to add music playback when switching to another page, if you do not press pause? – kaluk Dec 29 '14 at 02:44
  • Николай, как еще добавить воспроизведение музыки, при переходе на другую страницу, если паузу не нажимали? Сейчас при переходе музыка не играет. – kaluk Dec 29 '14 at 03:12
  • Полагаю, хотите как ВКонтакте? Чтобы плеер не перезагружался при переходе на другую страницу? Если так, то это одна из возможностей HTML5. Если кратко, вам нужно совсем не перезагружать страницу, а при переходе по ссылке загружать новую страницу с помощью AJAX, а стандартное поведение ссылки отменять. Для того, чтобы пользователь считал, что он по ссылке всё же перешёл, вы можете изменить адрес, указанный в адресной строке браузера (Здесь немного документации об этом https://developer.mozilla.org/ru/docs/Web/Guide/API/DOM/Manipulating_the_browser_history, http://htmlbook.ru/html5/history. – Nikolay 'Alagunto' Tkachenko Dec 29 '14 at 10:36
  • Если вы просто хотите запустить какую-то музыкальную дорожку в случае, если на паузу плеера не нажимали, вам нужно сделать так: `var isMuted = $.cookie('playerMuted'); if(!isMuted) playYourMusic();`, где `playYourMusic` -- функция, которая будет запускать вашу музыку. – Nikolay 'Alagunto' Tkachenko Dec 29 '14 at 10:38