2017-03-22 5 views
0

J'ai un Jplayer de travail et je suis fier de le partager ici pour la commodité de tout le monde.jplayer.org enregistrer playlist dans les cookies

Il mémorise la liste de lecture dans un cookie en y ajoutant des pistes individuelles. Voici le code de travail:

// PLAY SINGLE SONG 
// el delegation is needed because songs are dynamically loaded via ajax datatables 
$(document).on("click", '.playable', function(el) { 
    var title = $(this).data("title"); 
    var artist = $(this).data("artist"); 
    var mp3 = $(this).data("mp3"); 
    var poster = $(this).data("poster"); 
    myPlaylist.add({ 
     title: title, 
     artist: artist, 
     mp3: mp3, 
     poster: poster 
    }, true); /* true makes it play on load */ 
}); 

Le stockage des cookies est déclenché ici, en utilisant une fonction standard jplayer:

$("#jquery_jplayer").bind($.jPlayer.event.play, function(el) { 
    Cookies.remove('jp_playlist'); 
    Cookies.set('jp_playlist', JSON.stringify(myPlaylist)); 
}); 

Mais j'ai aussi un bouton ADD ALL, qui associe chaque chanson et ajoute à la playlist:

// PLAY ALL 
$(document).on("click", '#play_all', function(el) { 

    // play all 
    $.map($('.playable'), function(el) { 
     var title = $(el).data("title"); 
     var artist = $(el).data("artist"); 
     var mp3 = $(el).data("mp3"); 
     var poster = $(el).data("poster"); 
     myPlaylist.add({ 
      title: title, 
      artist: artist, 
      mp3: mp3, 
      poster: poster 
     }); 
    }); 

    var current = myPlaylist.current; 
    myPlaylist.play(current); /* if I would have put "true" like above it would have started the last song instead of the first */ 

    Cookies.remove('jp_playlist'); 
    Cookies.set('jp_playlist', JSON.stringify(myPlaylist)); 
}); 

le cookie n'est pas réglé et la liste de lecture n'est pas retenue sur reload la page. Je alerte (JSON.stringify (myPlaylist)) et tout se montre bien. Il semble que myPlaylist.play (current) ne déclenche pas la liaison ($ .jPlayer.event.play) et mes 2 dernières lignes qui forcent le stockage des cookies ne fonctionnent pas. J'ai également essayé de supprimer ces lignes et de mettre le "vrai", pour tester si elle déclenche le bind.event.play mais cela ne fonctionne pas.

Merci d'avance pour votre temps et tout indice.

Répondre

0

Il s'agissait d'une limite de stockage de cookies. J'ai simplement contourné la limite en utilisant localStorage, .: par exemple

localStorage.setItem('jp_playlist', JSON.stringify(myPlaylist)); 
localStorage.removeItem('jp_playlist'); 

au lieu de

Cookies.set('jp_playlist', JSON.stringify(myPlaylist)); 
Cookies.remove('jp_playlist');