假设我有一个页面,我想在其中为每个网址(也包括图片等)附加一个参数(例如?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有什么问题?
答案 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 Lewis在loop 1 and 3
的其他答案中所指定的那样,您可以使用他的答案编写一个循环,但仍然需要图像的loop 2
{{1} }Š