希望用greasemonkey / javascript修改页面上的链接

时间:2015-01-20 14:16:32

标签: javascript greasemonkey

使用greasemonkey,我想替换以“?####结尾的所有链接 - ####是随机字符”并移除?####

例如:

替换默认网址 http//mysite.com/a/b-b1/product1/?####http//mysite.com/a/b-b1/product1/

这就是我所拥有的:

var anchors = document.getElementsByTagName('a');

for (var i = 0; i < anchors.length; i++) {
  var n = anchors.indexOf('?');
  link = anchors.substring(0, n != - 1 ? n : anchors.length);
  anchors[i].href = link.href
}

我也试过这个

s = s.substring(0, s.indexOf('?'));

两者都没有做任何事情。你觉得这个片段有问题吗?想法?

2 个答案:

答案 0 :(得分:0)

您只是忘记在锚点集上应用索引。

var anchors = document.getElementsByTagName('a');

for (var i = 0; i < anchors.length; i++) {
  anchors[i].href = anchors[i].href.split("?")[0];
}

答案 1 :(得分:0)

您没有使用索引从NodeList

中检索元素

但是,您可以使用一些旧式循环和if-conditions以及一些正则表达式的帮助。

var anchors = document.getElementsByTagName('a');
for(var i = 0; i < anchors.length; i++)
    anchors[i].href = anchors[i].href.replace(/\?.*/, "");

我之所以使用正则表达式,是因为它不需要检查?然后使用子字符串函数。这很简单。它包含?之后的任何内容,只有它存在时才会替换。如果不是,则不会发生替换。