把当前网站链接生成 markdown 格式的链接形式:[title](url)
当前为
// ==UserScript==
// @name 复制网址markdown
// @namespace https://greasyfork.org/users/1171320
// @version 1.01
// @description 把当前网站链接生成 markdown 格式的链接形式:[title](url)
// @author chatgpt 辅助
// @icon https://g.csdnimg.cn/static/logo/favicon32.ico
// @run-at document-end
// @match *://*/*
// @exclude *://*/*.ipynb
// @grant GM_addStyle
// @noframes
// @license MIT
// ==/UserScript==
// 立即执行函数避免污染全局
(function () {
"use strict";
addStyle();
addBtn();
let isClicking = false; // 防止过快重复点击
document.getElementById("copyBtn").addEventListener("click", function () {
if (!isClicking) {
copy();
isClicking = true;
setTimeout(() => {
isClicking = false;
}, 3000);
}
});
const result = {
flag: true, // 标志位
url: document.URL, // 当前网页链接
title: document.title, // 当前网页标题
text: "", // 生成的 markdown 链接
};
const removeParamPattern = /\?.*/; // 用于移除URL中的参数
function removeParam(url) {
return url.replace(removeParamPattern, "");
}
const urlMap = {
"mp.weixin.qq.com": function (result) {
const name = document.querySelector("#profileBt a")?.textContent.trim();
result.title = `${result.title}_${name}_微信公众号`;
},
"blog.csdn.net/": function (result) {
result.title = result.title.replace(/\(.*?\)/, "").trim(); // 去掉CSDN的提示
result.title = result.title.replace(/CSDN博客.*/, "CSDN博客");
if (result.url.match(/blog.csdn.net\/.*?\/category_*/)) {
result.title = `==分类专栏==: ${result.title}`;
} else {
result.url = result.url.split("?")[0]; // 去掉查询参数
}
},
"toutiao.com/article/": function (result) {
const author = document.querySelector("a.user-name")?.textContent;
result.title = `${result.title}-【${author}】-文章`;
},
"bilibili.com/video/": function (result) {
result.flag = false;
const author = document.querySelector(".up-name")?.textContent.trim();
result.title = `${result.title}-【${author}】`;
},
// 添加更多网址处理...
};
function copy() {
let isFound = false;
for (let urlPattern in urlMap) {
const reg = new RegExp(urlPattern, "i");
if (reg.test(result.url)) {
const handler = urlMap[urlPattern];
if (handler) {
handler(result);
}
isFound = true;
break;
}
}
if (result.flag) {
result.url = removeParam(result.url);
}
result.text = `【${result.title} (${result.url} )】`;
// 复制到剪贴板
handleCopy(result.text);
// 修改按钮样式
const copyBtn = document.getElementById("copyBtn");
copyBtn.style.background = "red";
copyBtn.textContent = "success";
setTimeout(() => {
copyBtn.style.background = "green";
copyBtn.textContent = "copy";
}, 3000);
}
function addStyle() {
const buttonStyle = `
.layui-btn {
display: inline-block;
height: 38px;
line-height: 38px;
padding: 0 18px;
background-color: #009688;
color: #fff;
border-radius: 2px;
cursor: pointer;
font-size: 14px;
}
.layui-btn-sm {
height: 30px;
line-height: 30px;
padding: 0 10px;
font-size: 12px;
}
`;
GM_addStyle(buttonStyle);
}
function addBtn() {
const button = document.createElement("button");
button.id = "copyBtn";
button.textContent = "copy";
button.style.cssText = "top: 150px; right: 0px; position: fixed; z-index: 1000; cursor: pointer; background: green; width: auto;";
button.classList.add("layui-btn", "layui-btn-sm");
document.body.appendChild(button);
}
function handleCopy(text) {
const inputNode = document.createElement("input");
inputNode.value = text;
document.body.appendChild(inputNode);
inputNode.select();
document.execCommand("copy");
inputNode.remove();
}
})();