如何使用 tampermonkey 将特定的 onclick 弹出窗口 link 转换为直接 link href?

How to convert a specific onclick popup link to direct link href with tampermonkey?

我正在尝试创建一个 tampermonkey 脚本来修改特定网页中的单个 link。我尝试了几乎所有的建议,但我新发现的 js 技能无处可去。 拿这个:

<p class="g2 gsp"><img src="https://ptt.org/t/ss.gif"> <a href="#" onclick="return popUp('https://somelink',480,320)">Maka Pato</a></p>

并转换为:

<p class="g2 gsp"><img src="https://ptt.org/t/ss.gif"> <a href="https://somelink">Maka Pato</a></p>

基本上,删除 onclick 弹出窗口并将 href 指向 #

的 link instad

我成功提取了“https://somelink”,但无法修改原始文件。

//function to extract the link
function xpathSelector(xpath) {
    return document.evaluate(xpath, document.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
        null).singleNodeValue;
};
//save the link
var mak = xpathSelector('.//a[text() = "Maka Pato"]');

var x = document.getElementsByClassName("g2 gsp")[0]

您可以使用 getAttributeregular expression 提取值,然后使用 removeAttribute 删除它并设置 href.

function xpathSelector(xpath) {
    return document.evaluate(xpath, document.body, null, XPathResult.FIRST_ORDERED_NODE_TYPE,
        null).singleNodeValue
}

const mak = xpathSelector('.//a[text() = "Maka Pato"]')

const x = document.getElementsByClassName("g2 gsp")[0]

// parentheses create a capture inside the match
// index 0 is the full match, then indexes 1+ are each capture
const url = mak.getAttribute('onclick').match(/'(https?:\/\/\S+)'/)[1]

mak.removeAttribute('onclick')

mak.href = url

console.log(x.outerHTML)
<p class="g2 gsp"><img src="https://ptt.org/t/ss.gif"> <a href="#" onclick="return popUp('https://somelink',480,320)">Maka Pato</a></p>