Modification des paramètres d'URL d'une page

Je souhaite ajouter le paramètre &vhs=1 à la fin de chaque URL de la vidéo YouTube sur mon navigateur. J'ai essayé d'utiliser le script suivant, mais il est bloqué dans une boucle (continue d'ajouter &vhs=1 &vhs=1... ).

 // ==UserScript== // @name Youtube Tape Mode // @namespace _pc // @match *://*.youtube.com/watch?* // @run-at document-start // ==/UserScript== var oldUrlPath = window.location.pathname; /*--- Test that "&vhs=1" is at end of URL, excepting any "hashes" or searches. */ if ( ! /\&vhs=1$/.test (oldUrlPath) ) { var newURL = window.location.protocol + "//" + window.location.hostname + oldUrlPath + window.location.search.replace + "&vhs=1" + window.location.hash ; /*-- replace() puts the good page in the history instead of the bad page. */ window.location.replace (newURL); } 

Quelqu'un peut-il offrir des idées et des conseils sur la façon dont je peux écrire le script à cette fin? Je ne peux pas trouver comment sortir le problème de la boucle infinie.

Ce script vérifie le pathname mais définit la partie de search de l'URL. De plus, il comporte au moins un problème de syntaxe. Aussi, utilisez l' host plutôt que le hostname d' hostname ; C'est plus robuste et portable.

Donc votre script serait comme:

 // ==UserScript== // @name Youtube Tape Mode // @namespace _pc // @match *://*.youtube.com/watch?* // @run-at document-start // ==/UserScript== var oldUrlSearch = window.location.search; /*--- Test that "&vhs=1" is at end of URL, excepting any "hashes" or searches. */ if ( ! /\&vhs=1$/.test (oldUrlSearch) ) { var newURL = window.location.protocol + "//" + window.location.host + window.location.pathname + oldUrlSearch + "&vhs=1" + window.location.hash ; /*-- replace() puts the good page in the history instead of the bad page. */ window.location.replace (newURL); } 

Notez que les URL de YouTube ont toujours quelque chose dans la partie de search de l'URL, donc ce code est correct. Pour d'autres sites, vous pourriez avoir besoin d'un contrôle supplémentaire et d'ajouter soit &vhs=1 ou ?vhs=1 selon que la recherche était initialement vierge.