Greasy Fork

网页表格复制器

网页表格复制脚本

当前为 2023-12-01 提交的版本,查看 最新版本

// ==UserScript==
// @name         网页表格复制器
// @namespace    http://tampermonkey.net/
// @version      0.231201.1
// @description  网页表格复制脚本
// @author       N-cat
// @match        *://*/*
// @icon         data:image/png;base64,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
// ==/UserScript==

(function() {
    'use strict';
    // 样式添加
    const style = `<style>
    .get{
        position:fixed;
        right:80px;
        bottom:150px;
        background-color:#00a1d6;
        color:white;
        height:50px;
        width:50px;
        border-radius: 10px;
        font-size:15px;
        border:solid 3px #FA5A57;
        cursor:pointer;
        outline: none;
        z-index: 999;
    }
    .alertMessage{
        position: fixed;
		top: 30px;
		left: 40%;
		right: 40%;
		padding: 20px 30px;
		background: rgba(0, 0, 0, 0.8);
		color: #ffffff;
		font-size: 20px;
		text-align: center;
		z-index: 999;
		display: none;
        border-radius:5px;
    }
    </style>`;
    let div = document.createElement("div");
    div.innerHTML += style;
    document.body.append(div);
    // 提示框
    var alertMessage = document.createElement("div");
    alertMessage.classList.add('alertMessage');
    document.body.append(alertMessage);
    function alertmess(mess) {
		alertMessage.innerHTML = mess; // 填入要显示的文字
		alertMessage.style.display = "inline"; // 显示弹框
		setTimeout(function () { // 倒计时
			alertMessage.innerHTML = ''; // 清空文本
			alertMessage.style.display = "none" // 隐藏弹框
		}, 3000); // 3秒
	}
    // 获取按钮
    var get = document.createElement("input");
    get.setAttribute("type", "button");
    get.setAttribute("value", "触发");
    get.classList.add('get');
    document.body.append(get);
    // 获取table标签
    var getnum = 0 // 0:未(取消)触发 1:已触发
    let startX = 9999; // 按下坐标
    let startY = 9999;
    let endX = 9999; // 鼠标坐标
    let endY = 9999;
    get.onclick = function(){
        var tds = document.querySelectorAll('td');
        console.log(tds);
        for(let i of tds){
            // 文本设置无法选中
            i.style.userSelect = "none";
            // 鼠标悬浮在td上时提示
            i.addEventListener("mousemove", function(){
                i.style.backgroundColor = 'black';
                i.style.color = 'white';
                for(let j of i.children){
                    j.style.color = 'white';
                }
            });
            i.addEventListener("mouseout", function(){
                i.style.removeProperty("background-color");
                i.style.removeProperty("color");
                for(let j of i.children){
                    j.style.removeProperty("color");
                }
            });
        }
        // 框选变色(还未添加复制功能)
        window.addEventListener("mousedown", function(e){
            startX = e.clientX;
            startY = e.clientY;
        });
        window.addEventListener("mousemove", function(e){
            endX = e.clientX;
            endY = e.clientY;
            for(let i of tds){
                // 获取tr元素的左上角坐标和宽度、高度
                var rect = i.getBoundingClientRect();
                var tdleft = rect.left;
                var tdtop = rect.top;
                var tdwidth = rect.width;
                var tdheight = rect.height;
                console.log("起止坐标", startX, endX, startY, endY);
                // console.log("td坐标", tdleft, tdtop);
                if (startX <= tdleft + tdwidth && startY <= tdtop + tdheight && endX >= tdleft && endY >= tdtop) {
                    // 将tr元素的背景色设置为黑色(或其他你想要的颜色)
                    i.style.backgroundColor = 'black';
                    i.style.color = 'white';
                } else if (startX !== 9999){
                    i.style.removeProperty("background-color");
                    i.style.removeProperty("color");
                }
            }
        });
        window.addEventListener("mouseup", function(e){
            startX = 9999; // 按下坐标
            startY = 9999;
            endX = 9999; // 鼠标坐标
            endY = 9999;
            for(let i of tds){
                i.style.removeProperty("background-color");
                i.style.removeProperty("color");
            }
        });
        // 点击复制全部execl(基础适配)
        var tables = document.getElementsByTagName("table");
        for(let i of tables){
            i.addEventListener("mousedown", function(){
                var execl = []
                var trs = i.getElementsByTagName("tr");
                for(let j of trs){
                    var row = []
                    var tds = j.getElementsByTagName("td");
                    for(let k of tds){
                        if(k.style.display !== "none"){
                            row.push(k.innerText);
                        }
                    }
                    execl.push(row);
                }
                console.log(execl);
                var csv = ""
                for(let i of execl){
                    for(let j of i){
                        csv = csv + '"' + "'" + j + '"\t';
                    }
                    csv = csv.slice(0,-1) + "\n";
                }
                console.log(csv);
                // 复制视频名称到剪切板
                const textarea = document.createElement('textarea');
                document.body.appendChild(textarea);
                textarea.innerHTML = csv;
                textarea.select(); // 选取文本域的内容
                if (document.execCommand('copy')) {
                    document.execCommand('copy');
                    alertmess("网页表格已复制到剪切板");
                }
                document.body.removeChild(textarea);
            });
        }
        alertmess("网页表格复制器开启成功");
    }
})();