Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recall Tampermonkey script when page location changes

Well, I want to know if its possible to recall a Tampermonkey script when a user changes his location (but the match is still active). For example, my scripts hooks youtube website.

I need to make that the script recalls itself when I change the video, my actual script is:

// ==UserScript==
// @name        xxx
// @namespace    xxx
// @version      1.0
// @description  xxx
// @author       Ikillnukes
// @match        https://www.youtube.com/*
// @match        https://youtu.be/*
// @grant        none
// ==/UserScript==

console.log("Tampermonkey hook!");
var script = document.createElement('script');
script.src = document.location.protocol+"//xxx";
(document.body || document.head || document.documentElement).appendChild(script);

As you can see I call console.log for debug it, and it gets called when I refresh or I load the webpage for the first time. But one time I change the video it doesn't get called anymore, and that is what I want to avoid.

I also reviewed this: http://tampermonkey.net/documentation.php and I didn't find anything, maybe I reviewed it too quickly?

So, any suggestions there?

like image 429
z3nth10n Avatar asked Aug 28 '15 16:08

z3nth10n


1 Answers

Listen to the custom events used by the youtube script:

window.addEventListener("yt-navigate-start", e => { console.log(e.type); });
window.addEventListener("yt-navigate-finish", e => { console.log(e.type); });

To see all these events in Chrome:

  • use DevTools → Elements panel → Event Listeners
  • use DevTools → Sources panel → Global Listeners
like image 172
wOxxOm Avatar answered Oct 29 '22 13:10

wOxxOm