简单写了个油猴脚本,可以自动识别有图比链接并自动转换
<div class="blockcode"><div id="code_rIH"><ol><li>// ==UserScript==<br /><li>// @name Hostloc 有图比 替换为 有图比 并转为超链接<br /><li>// @namespace http://tampermonkey.net/<br /><li>// @version 2.0<br /><li>// @description 将 hostloc.com 页面中的 "https://www.有图比.com/..." 纯文本转换为可点击的 有图比 链接<br /><li>// @author You<br /><li>// @match *://hostloc.com/*<br /><li>// @match *://*.hostloc.com/*<br /><li>// @icon https://www.google.com/s2/favicons?sz=64&domain=hostloc.com<br /><li>// @grant none<br /><li>// ==/UserScript==<br /><li><br /><li>(function() {<br /><li> 'use strict';<br /><li><br /><li> const targetBase = "https://www.有图比.com/";<br /><li> const replacementBase = "https://www.有图比.com/";<br /><li> <br /><li> // 使用正则匹配完整链接,允许包含字母、数字及常见的URL符号,遇到空格或中文字符时自动停止<br /><li> const urlRegex = /(https:\/\/www\.有图比\.com\/@!$&'()*+,;=%]*)/g;<br /><li><br /><li> function replace有图比Link(node) {<br /><li> // 1. 处理纯文本节点<br /><li> if (node.nodeType === Node.TEXT_NODE) {<br /><li> let parent = node.parentNode;<br /><li> <br /><li> // 如果已经在输入框、代码块,或者本身就已经是 <a> 标签里了,只需替换文本,不套娃生成新链接<br /><li> if (parent && ['A', 'TEXTAREA', 'CODE', 'PRE', 'SCRIPT', 'STYLE'].includes(parent.tagName)) {<br /><li> if (node.nodeValue.includes(targetBase)) {<br /><li> node.nodeValue = node.nodeValue.replaceAll(targetBase, replacementBase);<br /><li> }<br /><li> return;<br /><li> }<br /><li><br /><li> // 如果是普通的纯文本,且匹配到了有图比的链接格式<br /><li> if (urlRegex.test(node.nodeValue)) {<br /><li> urlRegex.lastIndex = 0; // 重置正则索引<br /><li> let fragment = document.createDocumentFragment();<br /><li> let lastIndex = 0;<br /><li> let match;<br /><li><br /><li> while ((match = urlRegex.exec(node.nodeValue)) !== null) {<br /><li> // 截取链接前方的普通文本<br /><li> if (match.index > lastIndex) {<br /><li> fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex, match.index)));<br /><li> }<br /><li><br /><li> // 获取匹配到的原始完整链接,并替换域名<br /><li> let originalUrl = match;<br /><li> let newUrl = originalUrl.replace(targetBase, replacementBase);<br /><li><br /><li> // 创建 <a> 标签,使其变成可点击链接<br /><li> let a = document.createElement('a');<br /><li> a.href = newUrl;<br /><li> a.textContent = newUrl;<br /><li> a.target = "_blank"; // 在新标签页打开<br /><li> // 可选:加个下划线和颜色,让它看起来更像个链接<br /><li> a.style.color = "#1E90FF"; <br /><li> a.style.textDecoration = "underline";<br /><li><br /><li> fragment.appendChild(a);<br /><li> lastIndex = urlRegex.lastIndex;<br /><li> }<br /><li><br /><li> // 补齐最后一个链接后面的剩余文本<br /><li> if (lastIndex < node.nodeValue.length) {<br /><li> fragment.appendChild(document.createTextNode(node.nodeValue.substring(lastIndex)));<br /><li> }<br /><li><br /><li> // 用拼装好的包含 <a> 标签的内容替换原本的纯文本节点<br /><li> if (parent) {<br /><li> parent.replaceChild(fragment, node);<br /><li> }<br /><li> }<br /><li> }<br /><li> // 2. 处理元素节点<br /><li> else if (node.nodeType === Node.ELEMENT_NODE) {<br /><li> // 跳过一些不该处理的标签,防止破坏网页原有的代码逻辑或排版<br /><li> if (['SCRIPT', 'STYLE', 'TEXTAREA', 'CODE', 'PRE'].includes(node.tagName)) return;<br /><li><br /><li> // 处理已经是超链接的标签,防止其 href 跳转地址还是旧的<br /><li> if (node.tagName === 'A' && node.hasAttribute('href')) {<br /><li> let href = node.getAttribute('href');<br /><li> if (href.includes(targetBase)) {<br /><li> node.setAttribute('href', href.replaceAll(targetBase, replacementBase));<br /><li> }<br /><li> }<br /><li><br /><li> // 递归检查所有子节点 (使用 Array.from 是为了防止下面动态替换文本节点时打乱遍历顺序)<br /><li> Array.from(node.childNodes).forEach(replace有图比Link);<br /><li> }<br /><li> }<br /><li><br /><li> // 初始化:对当前已加载的整个 body 进行一次扫描替换<br /><li> replace有图比Link(document.body);<br /><li><br /><li> // 监听器:处理动态加载的内容(如无刷新翻页、展开评论等)<br /><li> const observer = new MutationObserver((mutations) => {<br /><li> mutations.forEach((mutation) => {<br /><li> mutation.addedNodes.forEach((addedNode) => {<br /><li> replace有图比Link(addedNode);<br /><li> });<br /><li> });<br /><li> });<br /><li><br /><li> // 开启监听,观察 body 下所有子节点的变化<br /><li> observer.observe(document.body, {<br /><li> childList: true,<br /><li> subtree: true<br /><li> });<br /><li><br /><li>})();</ol></div><em onclick="copycode($('code_rIH'));">复制代码</em></div><br /><br />
<br />
<br />
tampermonkey新建脚本,全选删除,然后把以上整个代码贴进去保存即可,不放心可以让gpt review一下看有没有问题 在这个ai大爆炸的时代,依然有老手艺人坚持手搓代码 手搓代码厉害 <i class="pstatus"> 本帖最后由 QQ云 于 2026-5-5 12:31 编辑 </i><br />
<div class="quote"><blockquote>元信息格式错误:<br />
你的 // @name、// <a href="https://hostloc.com/home.php?mod=space&uid=73703" target="_blank">@version</a> 这些字段被多余的 标签包裹了,油猴完全无法解析。</blockquote></div><br />
报错,豆包修改了一下<br />
<ignore_js_op>
<img src="https://hostloc.com/static/image/filetype/zip.gif" border="0" class="vm" alt="" />
<span style="white-space: nowrap" id="attach_176465" onmouseover="showMenu({'ctrlid':this.id,'pos':'12'})">
<a href="https://hostloc.com/forum.php?mod=attachment&aid=MTc2NDY1fDVhNWQ4YzIxfDE3NzgwMjAwMjN8MHwxNDc3MDAy" target="_blank">Hostloc 有图比替换为 有图比 并自动转超链接-2.0.user.zip</a>
<em class="xg1">(1.58 KB, 下载次数: 7)</em>
</span>
<div class="tip tip_4" id="attach_176465_menu" style="position: absolute; display: none" disautofocus="true">
<div class="tip_c xs0">
<div class="y"><span title="2026-5-5 12:26">昨天 12:26</span> 上传</div>
点击文件名下载附件
</div>
<div class="tip_horn"></div>
</div>
</ignore_js_op>
我记得以前很多年前,就有人干过这个事情。。。。。。。。。
页:
[1]