2016-09-27 2 views
0

Ich betreibe ein Greasemonkey-Skript mit dieser URL:Greasemonkey-Skript Brände nur einmal pro Seite Last

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

Mein Problem ist, dass mein Skript scheint „gesperrt“ auf „intern“ Navigationen zu sein, was bedeutet, wenn ich Firefox laufen und die erste Seite, die ich lade, ist die "steven73" Seite und nachdem diese Seite geladen wurde, klicke ich auf einen der "Trending Now" Streamer (Sie sehen es in der oberen linken Ecke auf der Webseite) Ich möchte die Messagebox bekommen aber die msgbox doesn tauche nicht auf, weil das Skript nur "EINMAL" ausgeführt wird, wenn ich die "younow" -Website zum ersten Mal besuche (außer F5). Es scheint, dass "interne" Navigationen die Ausführung des Skripts blockieren. Wie kann ich mein Skript jedes Mal ausführen, wenn ich auf einen der Streamer "Trending Now" (in der oberen linken Ecke der Website) klicke?

Antwort

0

Diese Website verwendet den AJAX-Ansatz, um Teile der Seite zu aktualisieren, ohne sie vollständig neu zu laden.
Während Benutzer Scripts nur beim ersten Laden der Seite automatisch ausgeführt werden.

einen Listener für Click-Ereignis hinzufügen und Ihren Code nach einer Pause ausführen:

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!'); 
} 

Oder waitForKeyElements Funktion nutzen zu warten, bis ein Element anstelle der Verwendung setInterval erscheint.

+0

Ich habe es auf dem Thumbnail-Link getestet, so dass Sie möglicherweise den 'a.trending_image'-Selektor ändern müssen. Tatsächlich können Sie einfach "a" verwenden, um alle Link-Klicks zu erfassen. – wOxxOm

Verwandte Themen