用于替换 url 中字母的 greasemonkey 脚本

greasemonkey script to replace a a letter in the url

我尝试修改我发现的一些脚本 - 但它们不起作用。

当加载的页面上有一个 link 指向: https://website.new/ia-o/number1/number2/number3/number4.jpeg.html

我希望它实际指向: https://website.new/ib-o/number1/number2/number3/number4.jpeg.html

所以基本上只替换 link 中的一个字母(从 */ia-o/**/ib-o/*

这是我试过的脚本:

// ==UserScript==
// @name        website.new
// @namespace   lii
// @description redirect to anothersite
// @include     https://website.new/*
// @version     1
// @grant       none
// ==/UserScript==

var links,thisLink;
links = document.evaluate("//a[@href]",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);

for (var i=0;i<links.snapshotLength;i++) {
    var thisLink = links.snapshotItem(i);

    thisLink.href = thisLink.href.replace('https://website.new/ia-o/',
                                          'https://website.new/ib-o/');

}

但它什么也没做。

如果有人能提供帮助 - 我将不胜感激!

第二部分: 更好的解决方案是,如果我可以像这样重新制作整个 link。

网页上的旧 link:https://website.new/ia-o/number1/number2/number3/number4.jpeg.html

页面上的新 link:https://website.new/o/number1/number2/number3/number4.jpeg

(因此从 link 中删除 ia- 和 .html)

但任何一种解决方案都可以!

谢谢!

替换当前页面中找到的所有链接中的 href 属性

// ==UserScript==
// @name        website.new
// @namespace   lii
// @description redirect to anothersite
// @include     https://website.new/*
// @version     1
// @grant       none
// ==/UserScript==

(function() {

    for (var i=0,link; (link=document.links[i]); i++) {
        link.href = link.href.replace('oldvalue', 'newvalue');
    }

})();

你可以替换单个字母

link.href.replace('a', 'o');

或整个单词

link.href.replace('grease', 'tamper');

在您的特定情况下,只需将不需要的字符串替换为空字符串即可删除它们

link.href = link.href.replace(/ia-|\.html/g, '');

这与之前的回复类似,只是缩短了一点

// ==UserScript==
// @name        website.new
// @namespace   lii
// @description redirect to anothersite
// @include     https://website.new/*
// @version     1
// @grant       none
// ==/UserScript==

[...document.links].forEach(item => item.href = item.href.replace('oldvalue', 'newvalue'));