2016-09-27 1 views
0

I exécuter un script Greasemonkey avec cette URL:feux de script Greasemonkey qu'une seule fois par chargement de la page

// @include  https://www.younow.com* 
// @exclude  https://www.younow.com/steven73* 
// @grant  none 
// ==/UserScript== 
alert("HELLO"); 

Mon problème est que mon script semble être « désactivé » sur navigations « internes », ce qui signifie quand je lance Firefox et le premier site que je charge est la page "steven73" et après que cette page est chargée je clique sur l'un des streamers "Tendance Maintenant" (vous le voyez sur le coin supérieur gauche sur le site) Je veux obtenir la boîte de message mais msgbox doesn n'apparaît pas, car le script n'est exécuté que "ONE TIME" lorsque je visite le site "younow" la 1ère fois (sauf F5). Il semble que les navigations "internes" bloquent l'exécution du script. Comment puis-je exécuter mon script à chaque fois que je clique sur l'un des streamers "Tendance Maintenant" (en haut à gauche sur le site)?

Répondre

0

Ce site utilise l'approche AJAX pour mettre à jour des parties de la page sans la recharger complètement.
Attendu que les scripts utilisateurs sont automatiquement exécutés uniquement lors du chargement initial de la page.

Ajouter un écouteur pour l'événement clic et exécuter votre code après une pause:

document.addEventListener('click', function(e) { 
    var trendingLink = e.target.closest('a.trending_image'); 
    if (trendingLink) { 
     var stopTryingAt = Date.now() + 5000; 
     var interval = setInterval(function() { 
      if (document.querySelector('.player-main')) { 
       clearInterval(interval); 
       onPageUpdated(); 
      } 
      if (Date.now() >= stopTryingAt) { 
       clearInterval(interval); 
      } 
     }, 20); 
    } 
}); 

function onPageUpdated() { 
    console.log('Boo!'); 
} 

Ou utiliser la fonction waitForKeyElements attendre jusqu'à ce qu'un élément apparaît au lieu d'utiliser setInterval.

+0

Je l'ai testé sur le lien des miniatures, vous devrez peut-être changer le sélecteur 'a.trending_image'. En fait, vous pouvez simplement utiliser 'a' pour attraper tous les clics de lien. – wOxxOm