Greasy Fork is available in English.
替换重定向的链接
当前为
// ==UserScript==
// @name 自动重定向
// @namespace http://tampermonkey.net/
// @version 0.3.0
// @description 替换重定向的链接
// @author share121
// @match *://*/*
// @run-at document-start
// @license MIT
// @connect *
// @grant GM_xmlhttpRequest
// ==/UserScript==
(() => {
/*
function changHref(ele) {
try {
if (ele.href) {
fetch(new URL(ele.href, location.href).toString(), {
method: "HEAD",
})
.then((e) => {
if (e.url && e.url !== ele.href) {
ele.href = e.url;
}
})
.catch((e) => console.error(e));
}
} catch (e) {
console.error(e);
}
}
*/
function changHref(ele) {
try {
if (ele.href) {
GM.xmlHttpRequest({
method: "HEAD",
url: new URL(ele.href, location.href).toString(),
onload: function (response) {
if (
response.finalUrl &&
response.finalUrl !== ele.href
) {
ele.href = response.finalUrl;
}
},
onerror: function (response) {
console.error(response);
},
});
}
} catch (e) {
console.error(e);
}
}
function isA(ele) {
while (ele) {
if (ele instanceof HTMLAnchorElement) {
return ele;
}
ele = ele.parentNode;
}
return false;
}
new MutationObserver((mutationList) => {
mutationList.forEach((e) => {
if (e.type === "attributes") {
if (e.target instanceof HTMLAnchorElement) {
changHref(e.target);
}
} else {
e.addedNodes.forEach((ele) => {
if (ele instanceof HTMLAnchorElement) {
changHref(ele);
}
});
}
});
}).observe(document, {
subtree: true,
childList: true,
attributeFilter: ["href"],
});
window.addEventListener("mouseover", (e) => {
let a = isA(e.target);
if (a) {
changHref(a);
}
});
})();