Greasy Fork is available in English.
自动将页面所有文本转换为链接
当前为
// ==UserScript==
// @name AutoLinker
// @namespace tea.pm
// @include *
// @grant none
// @version 1.1.1
// @author cljnnn
// @description 自动将页面所有文本转换为链接
// @description_en trun url in text to link
// ==/UserScript==
String.prototype.isEmpty = function() {
return (this.length === 0 || !this.trim());
};
const reUrl = /\b(\w+:\/\/\S*)\b/g;
function fixURL(node) {
value = node.nodeValue;
// console.log("updating link... ", value);
newValue = value.replace(reUrl, '<a target="_blank" href="$1">$1</a>');
var replacementNode = document.createElement('span');
replacementNode.innerHTML = newValue;
node.parentNode.insertBefore(replacementNode, node);
node.parentNode.removeChild(node);
}
function traverse(node) {
if(!node) {
return;
}
if(node.nodeType != Node.ELEMENT_NODE && node.nodeType != Node.TEXT_NODE) {
return;
}
let name = node.nodeName;
if(name == "SCRIPT" || name == "NOSCRIPT" || name == "STYLE" || name == "A" || name == "INPUT" || name == "TEXTAREA") {
return;
}
if(node.nodeType == Node.TEXT_NODE) {
let value = node.nodeValue;
if(!value.isEmpty()) {
if(value.match(reUrl)) {
fixURL(node);
}
}
}
for(let child of node.childNodes) {
traverse(child);
}
}
setTimeout(function(){ traverse(document.body); }, 2000);