2013-04-17 2 views
1

Я хочу добавить параметр &vhs=1 в конце каждого URL-адреса видео YouTube в моем браузере. Я попытался использовать следующий скрипт, но он застревает в цикле (продолжает добавлять &vhs=1&vhs=1...).Изменение параметров URL страницы

// ==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); 
} 

Может кто-нибудь предложить некоторые идеи и советы относительно того, как я могу написать сценарий для этой цели? Я не могу понять, как выйти из проблемы бесконечного цикла.

ответ

1

Этот сценарий является проверкаpathname но установкаsearch часть адреса. Кроме того, у него есть хотя бы одна проблема синтаксиса. Кроме того, используйте host, а не hostname; он более надежный и портативный.

Так что ваш сценарий будет, как:

// ==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); 
} 

Обратите внимание, что URL YouTube, всегда есть что-то в search части URL, так что этот код прекрасно. Для других сайтов вам может потребоваться дополнительная проверка и добавить либо &vhs=1, либо ?vhs=1 в зависимости от того, был ли поиск изначально пустым.

+1

Это замечательно! Спасибо за оригинальный скрипт btw! –

+0

Добро пожаловать! Если этот ответ работает на вас, отметьте галочку рядом с ним (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235). –

Смежные вопросы