更改页面加载时的所有网址

时间:2011-03-24 20:23:51

标签: javascript greasemonkey

假设我有一个页面,我想在其中为每个网址(也包括图片等)附加一个参数(例如?name=fc)。

我正在尝试使用正则表达式使用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 个答案:

答案 0 :(得分:4)

for(var i = 0; i < document.links.length; i++) {
 document.links[i].href += "?name=fc"
}

您应该只使用document.links属性。这会将“?name = fc”附加到所有链接(a和img等)。

答案 1 :(得分:1)

//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";

正如Mike Lewisloop 1 and 3的其他答案中所指定的那样,您可以使用他的答案编写一个循环,但仍然需要图像的loop 2 {{1} }Š