Turns URLs in chat messages into clickable links without affecting usernames or badges
当前为
// ==UserScript==
// @name Make ppv.land/ft Chat Links Clickable
// @namespace https://ppv.land/ft
// @version 1.2
// @description Turns URLs in chat messages into clickable links without affecting usernames or badges
// @match https://ppv.land/ft*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
// Function to make URLs clickable while preserving styles and usernames
function makeLinksClickable() {
const messages = document.querySelectorAll('.message-text');
messages.forEach(message => {
// Skip if links already processed
if (message.dataset.linksProcessed) return;
// Separate the username part from the message text
const usernameEnd = message.innerHTML.indexOf(':') + 1;
const usernamePart = message.innerHTML.slice(0, usernameEnd);
const textPart = message.innerHTML.slice(usernameEnd);
// Only modify URLs in the text part, preserving any special username styling
const urlRegex = /(https?:\/\/[^\s]+)/g;
const updatedTextPart = textPart.replace(urlRegex, (url) => `<a href="${url}" target="_blank" style="color: inherit;">${url}</a>`);
// Combine the username part and the updated text part
message.innerHTML = usernamePart + updatedTextPart;
message.dataset.linksProcessed = 'true';
});
}
// Run the function initially and whenever new messages are added
makeLinksClickable();
const observer = new MutationObserver(makeLinksClickable);
observer.observe(document.getElementById('message-list'), { childList: true });
})();