向 latexlive.com 添加复制按钮

向 latexlive.com 添加复制按钮,方便快速复制 latex

// ==UserScript==
// @name         向 latexlive.com 添加复制按钮
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  向 latexlive.com 添加复制按钮,方便快速复制 latex
// @author       Cesaryuan
// @match        https://*.latexlive.com/*
// @icon         https://www.google.com/s2/favicons?domain=latexlive.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';
    // create a new button
    var btn = document.createElement('button');
    btn.innerHTML = '复制';
    // add class to btn
    btn.className = 'btn btn-light theme-fill';
    // set id
    btn.id = 'copy-btn';
    // add click handler
    btn.onclick = function () {
        // get the selected element
        var selected = document.querySelector('#txta_input');
        // copy the text
        navigator.clipboard.writeText(selected.value);
        toast('复制成功');
    };
    var CONTAINER = "#wrap_immediate > row > div.col-5.col-sm-5.col-md-5.col-lg-5.col-xl-5";
    // wait container appear and add btn
    var interval = setInterval(function () {
        var wrap = document.querySelector(CONTAINER);
        if (wrap) {
            wrap.appendChild(btn);
            clearInterval(interval);
        }


    }, 100);

    function toast(msg) {
        var toast = document.createElement('div');
        toast.className = 'toast';
        toast.innerHTML = msg;
        toast.style.position = 'fixed';
        toast.style.bottom = '10px';
        toast.style.right = '10px';
        toast.style.zIndex = '9999';
        toast.style.backgroundColor = '#fff';
        toast.style.color = '#000';
        toast.style.padding = '10px';
        toast.style.borderRadius = '5px';
        toast.style.boxShadow = '0 0 5px #000';
        toast.style.fontSize = '16px';
        toast.style.fontWeight = 'bold';
        toast.style.opacity = '0';
        toast.style.transition = 'opacity 0.5s';
        document.body.appendChild(toast);
        setTimeout(function () {
            toast.style.opacity = '1';
        }, 100);
        setTimeout(function () {
            toast.style.opacity = '0';
        }, 2000);
        setTimeout(function () {
            toast.remove();
        }, 3000);
    }
})();