Hey salut !
Bon alors un peu de nouveau:
Déjà pour commencé, je me suis apperçu que le $(window).load(); s'éxecutait plusieurs fois, d'ou un certain conflit.
Je ne sais pas trop pourquoi d'ailleurs, mais du coup, j'ai donc remplacé $(window).load(function(){[...]}) par window.onload = function(){[...]}
Cela à bien réglé le problème, et window.load ne s’exécute bien qu'une seule fois.
Mais bon, ça marche toujours pas :'(
J'ai continuer à faire des tests à droite à gauche, et j'ai fini par comprendre que c'est la fonction "test" que le script ne trouve pas, je m'explique:
lorsque le plugin est actif, je lance une vidéo youtube; lorsque je clic sur pause par exemple, rien ne se passe.
Par contre si dans la console firebug j'execute simplement "function test(event){console.log(event)}" La ça fonctionne.
Ce qui veut dire que mon addEventListener fonctionne bien, et qu'il ajoute bien la fonction test; mais celle ci est introuvable lors de son exécution.
Auriez vous une idée de pourquoi ?
Sinon, est-ce possible de faire un addEventListener avec une fonction anonyme qui prendrait un parametre, du genre
elem.addEventListener("onStateChange", function($event){console.log($event)});
Voici mon code actuel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| // ==UserScript==
// @name Youtube PlayNext
// @namespace YOUTUBEPLAYNEXT
// @description Ajout d'un bouton "Lire à la suite" pour la gestion d'une playlist instantnée
// @include http://www.youtube.com/watch*
// @include https://www.youtube.com/watch*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js
// ==/UserScript==
window.onload = function(){
sessionStorage.init = 0;
var playlist;
if(!sessionStorage || !("init" in sessionStorage) || sessionStorage.init!=1){
sessionStorage.init=1;
sessionStorage.playList = [];
playlist = new Array();
} else {
playlist = sessionStorage.playList;
}
$("#watch7-secondary-actions").append('<span><button class="yt-uix-button yt-uix-tooltip read-after" role="button" title="Play after"><span class="yt-uix-button-content"><img src="http://hacker-law.net/multimedia/images/general/youtube-add.png" /></span></button></span>');
$("#watch7-secondary-actions button.read-after").on("click", function(){
playlist.push(document.location.href);
sessionStorage.playList = playlist;
console.log(sessionStorage.playList);
return false;
});
var test = function(newState){
console.log(newState)
}
player = document.getElementById("movie_player");
console.log(player);
player.addEventListener("onStateChange", "test");
} |
Pour précision, j'ai essayé de mettre la fonction "test", avant, dans et après le onload, mais ça n'a rien changé.
J'ai également essayé de décalarer la fonction en faisant
test = function(event){[...]}
et
function test(event){[...]}
mais rien aucune différence :'(
Dernière précision:
Effectivement, lorsque je fais un console.log(test); dans ma console firebug, j'ai un retour d'erreur:
ReferenceError: test is not defined
Je continue de chercher de mon coté,
Merci.
Partager