我是 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 扩展,但可用的扩展似乎不允许我正在寻找的文本替换级别。
注意按钮元素没有链接——它们可能是“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}`;
});
创建另一个答案以便可以比较...
试试这个,让我知道会发生什么......(第一个
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}')`;
});
})();
感谢 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}')`);
});
})();