markdown生成网页链接(右键触发)

右键点击时生成当前页面的Markdown链接并复制到剪贴板

目前為 2025-07-18 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         markdown生成网页链接(右键触发)
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  右键点击时生成当前页面的Markdown链接并复制到剪贴板
// @author       Will
// @match        *://*/*
// @grant        GM_registerMenuCommand
// @grant        clipboard.writeText
// @grant        GM_notification
// ==/UserScript==

(function () {
    'use strict';

    // 生成 Markdown 格式的链接
    function getMdToUrl(title, url) {
        return `[${title}](${url})`;
    }

    // 使用现代 API 复制文本
    function copyText(text) {
        navigator.clipboard.writeText(text)
            .then(() => {
                GM_notification({
                    title: "✅ Markdown 链接已复制",
                    text: "已成功复制当前页面的 Markdown 链接到剪贴板。",
                    timeout: 3000
                });
            })
            .catch(err => {
                console.error('无法复制文本: ', err);
                GM_notification({
                    title: "❌ 复制失败",
                    text: "无法将 Markdown 链接复制到剪贴板。请尝试手动复制。",
                    timeout: 5000
                });
            });
    }

    // 右键菜单触发函数
    function generateAndCopyMarkdownLink() {
        const title = document.title;
        const url = document.URL;
        const markdown = getMdToUrl(title, url);
        copyText(markdown);
    }

    // 注册右键菜单项
    GM_registerMenuCommand("生成并复制当前页面的Markdown链接", generateAndCopyMarkdownLink);

})();