希望用 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(/\?.*/, "");
我使用正则表达式只是因为,它不需要检查 ?
然后使用子字符串函数。这很简单。它会替换 ?
之后的所有内容,前提是它存在。如果不是,则不会发生替换。
使用 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(/\?.*/, "");
我使用正则表达式只是因为,它不需要检查 ?
然后使用子字符串函数。这很简单。它会替换 ?
之后的所有内容,前提是它存在。如果不是,则不会发生替换。