Copy Title and URL as Markdown

Copy current page title and URL in Markdown format using a hotkey or button

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey, Greasemonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Violentmonkey.

Voor het installeren van scripts heb je een extensie nodig, zoals Tampermonkey of Userscripts.

Voor het installeren van scripts heb je een extensie nodig, zoals {tampermonkey_link:Tampermonkey}.

Voor het installeren van scripts heb je een gebruikersscriptbeheerder nodig.

(Ik heb al een user script manager, laat me het downloaden!)

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een extensie nodig, zoals {stylus_link:Stylus}.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

Voor het installeren van gebruikersstijlen heb je een gebruikersstijlbeheerder nodig.

(Ik heb al een beheerder - laat me doorgaan met de installatie!)

// ==UserScript==
// @name         Copy Title and URL as Markdown
// @namespace    https://lynelluo.github.io/
// @version      1.10
// @description  Copy current page title and URL in Markdown format using a hotkey or button
// @author       lynel0625
// @match        *://*/*
// @grant        none
// @icon         https://raw.githubusercontent.com/Lynelluo/scriptastic-toolbox/main/scripts/Copy%20Title%20and%20URL%20as%20Markdown.png
// @license MIT
// ==/UserScript==
(function() {
    // Function to copy title and URL as Markdown
    function copyMarkdown() {
        var title = document.title;
        var url = window.location.href;
        var markdown;
        // Regular expression to check for common image file extensions
        var imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp|tiff)$/i;
        // Determine if URL points to an image file
        if (imageExtensions.test(url)) {
            markdown = `![${title}](${url})`; // Markdown format for images
        } else {
            markdown = `[${title}](${url})`; // Markdown format for other links
        }

        var textarea = document.createElement("textarea");
        textarea.value = markdown;
        document.body.appendChild(textarea);
        textarea.select();
        document.execCommand("copy");
        document.body.removeChild(textarea);

        showNotification("Copied as Markdown: " + markdown);
    }

    // Function to show a notification
    function showNotification(message) {
        var notification = document.createElement("div");
        notification.innerText = message;
        notification.style.position = "fixed";
        notification.style.bottom = "50px";
        notification.style.left = "10px";
        notification.style.backgroundColor = "#333";
        notification.style.color = "#fff";
        notification.style.padding = "10px";
        notification.style.borderRadius = "5px";
        notification.style.zIndex = 1001;
        notification.style.fontSize = "14px";
        notification.style.opacity = "0.9";
        document.body.appendChild(notification);

        // Automatically remove the notification after 2 seconds
        setTimeout(function() {
            document.body.removeChild(notification);
        }, 2000);
    }

    // Add event listener for 'Ctrl + Shift + y' or 'Command + Shift + y' shortcut
    document.addEventListener('keydown', function(e) {
        if ((e.key === 'y' || e.key === 'Y') && e.shiftKey) {
            if (e.ctrlKey || e.metaKey) {
                e.preventDefault(); // prevent default action
                copyMarkdown();
            }
        }
    });

    // Create a button to trigger the copy action
    var button = document.createElement("button");
    button.innerText = "Copy as Markdown";
    button.style.position = "fixed";
    button.style.bottom = "10px";
    button.style.left = "10px"; // Place the button in the bottom-left corner
    button.style.zIndex = 1000; // Make sure the button is on top of other elements
    document.body.appendChild(button);

    // Add event listener for the button
    button.addEventListener("click", function() {
        copyMarkdown();
    });
})();