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

Looking to modify the links on a page with greasemonkey/javascript

使用 greasemonkey,我想替换页面上所有以 ?#### 结尾的链接(#### 是随机字符)并删除 ?####

例如:

替换默认值url 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('?'));

谁都不做。你看到这段代码有什么问题吗?想法?

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

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

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

您没有使用索引从 NodeList

中检索元素

但是,您可以使用一些老式循环和 if 条件并在正则表达式的帮助下完成。

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

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