Изменение всех URL при загрузке страницы - PullRequest
1 голос
/ 24 марта 2011

Предположим, у меня есть страница, на которой я хотел бы добавить параметр (например, ?name=fc) к каждому URL (также к изображениям и т. Д.).

Я пытаюсь сделать это с помощью greasemonkey, используя регулярное выражение, но, похоже, это не работает (т.е. ссылки на странице не меняются).

Вот мой код

var txt = document.documentElement.innerHTML;
var exp = "/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig" ;
document.documentElement.innerHTML =( txt.replace(exp, "$1?name=fc"));

Мои знания JavaScript почти нулевые, так что терпите меня.

Итак, вопрос в том, что не так с этим JavaScript?

Ответы [ 2 ]

4 голосов
/ 24 марта 2011
for(var i = 0; i < document.links.length; i++) {
 document.links[i].href += "?name=fc"
}

Вы должны просто использовать атрибут document.links .Это добавит «? Name = fc» ко всем ссылкам (a, img и т. Д.).

1 голос
/ 24 марта 2011
//loop 1: change links <a href="..."
var links = document.getElementsByTagName('a');
for(var i = 0, len = links.length; i < len; ++i)
   links[i].href = links[i].href + "?name=fc";

//loop 2: change images <img src="..."
var imgs = document.getElementsByTagName('img');
for(var i = 0, len = imgs.length; i < len; ++i)
   imgs[i].href = imgs[i].href + "?name=fc";

//loop 3: change image maps <area href="..."
var areas = document.getElementsByTagName('area');
for(var i = 0, len = areas.length; i < len; ++i)
   areas[i].href = areas[i].href + "?name=fc";

Как указано Майком Льюисом в другом ответе вместо loop 1 and 3, вы можете написать один единственный цикл, используя его ответ, но все же вам нужно loop 2 для изображений src s

...