使用 Greasemonkey 更改给定域内的 URL 链接

问题描述 投票:0回答:3

我是 Greasemonkey(实际上是 Tampermonkey)的新手,我想写一个非常短的脚本:

  • 在给定域内有效(例如“mydomain.com”)

  • 解析活动选项卡中所有与按钮相关的 URL 链接

  • 替换如下:

    原文链接:

    [string_1]/[useful_part]?[string_2]

    替换为:

    [replacement_1]/[useful_part]

    所以“?”之后的所有内容可以丢弃,包括“?”本身。

更具体的URL链接如下:

http://127.0.0.1:6878/webui/player/[有用部分]?autoplay=true

所以字符串 1 = "http://127.0.0.1:6878/webui/player" 和字符串 2 = "autoplay=true"

我在这里看到了类似的问题:使用 Greasemonkey 和 FireFox 重写部分链接

但是我不太擅长RegEx,所以我无法根据自己的需要调整脚本。

我也在寻找 Firefox 扩展,但可用的扩展似乎不允许我正在寻找的文本替换级别。

greasemonkey tampermonkey
3个回答
1
投票

注意按钮元素没有链接——它们可能是“a”标签。如果下面的脚本不正确,请告诉我们它有什么不正确之处并提供详细信息(也许是其中一个按钮链接的屏幕截图?),我们将解决这个问题。

// ==UserScript==
// @name         your webui player replacements
// @namespace    http://tampermonkey.net/
// @version      0.1
// @match        http://127.0.0.1:6878/webui/player/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    const lnks = document.querySelectorAll('a');
    lnks.forEach( (el) => {
        const href = el.getAttribute('href');
        const ed1 = href.split('?')[0];
        const ed2 = ed1.replace('http://127.0.0.1:6878/webui/player','');
        el.setAttribute('href', `replacement_string/${ed2}`;
    });

0
投票

创建另一个答案以便可以比较...

试试这个,让我知道会发生什么......(第一个

el.setAttribute
可能不需要,或者它可能......?首先尝试一下。)

// ==UserScript==
// @name         your webui player replacements
// @namespace    http://tampermonkey.net/
// @version      0.1
// @match        http://127.0.0.1:6878/webui/player/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    const lnks = document.querySelectorAll('a');
    lnks.forEach( (el) => {
        const href = el.getAttribute('href');
        const ed1 = href.split('?')[0];
        const ed2 = ed1.replace('http://127.0.0.1:6878/webui/player','');
        el.setAttribute('href', `acestream://${ed2}`;
        el.setAttribute('onclick', `window.open('acestream://${ed2}')`;
    });

})();

0
投票

感谢 cssyphus,这是工作脚本。 {DOMAIN_NAME} 当然需要替换:

// ==UserScript==
// @name         Webui Player Replacements
// @namespace    http://tampermonkey.net/
// @description  Change URL links to AceStream on a given domain
// @version      0.1
// @match        http://{DOMAIN_NAME}/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    const lnks = document.querySelectorAll('a');
    lnks.forEach( (el) => {
        const href = el.getAttribute('href');
        const ed1 = href.split('?')[0];
        const ed2 = ed1.replace('http://127.0.0.1:6878/webui/player/','');
        el.setAttribute('href', `acestream://${ed2}`);
        el.setAttribute('onclick', `window.open('acestream://${ed2}')`);
    });
})();
© www.soinside.com 2019 - 2024. All rights reserved.