Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

编写的油猴脚本居然在脚本猫中运行后无任何反应 #318

Open
ffgg536956 opened this issue Nov 7, 2024 · 1 comment
Open

Comments

@ffgg536956
Copy link

ffgg536956 commented Nov 7, 2024

我用AI 写了一段获取系统剪切板 并显示它的油猴脚本 Clipboard Content Viewer,脚本可以在篡改猴测试 插件里面按照脚本预期效果来获取剪切板并显示 ,但奇怪的是 在脚本 猫中运行相同脚本却无任何反应。

可 是我明明已经 给予它读取剪切板的权限了(如下图)。但通过页面右键菜单脚本 猫选项 -- Clipboard Content Viewer 运行它却没有任何反应,而相同的脚本在油猴脚本中却能按预期正常运行。

我的浏览器是Edge浏览器,win11系统。

这是什么原因?我该怎么办? 最 下面是这段脚本的源代码,期待作者能够帮忙测试并解答,感谢。

image_186
image_187

image

Clipboard Content Viewer 脚本 :

// ==UserScript==
// @name         Clipboard Content Viewer
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Show clipboard content via context menu
// @author       Your Name
// @match        *://*/*
// @grant        GM_registerMenuCommand
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @grant        GM_openInTab
// @run-at       context-menu
// ==/UserScript==

(function() {
    'use strict';

    // 创建自定义样式的对话框
    GM_addStyle(`
        .custom-dialog {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            background: white;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            z-index: 10000;
            max-width: 80%;
            max-height: 80vh;
            overflow-y: auto;
        }
        .custom-dialog-header {
            font-size: 18px;
            font-weight: bold;
            margin-bottom: 10px;
            padding-bottom: 10px;
            border-bottom: 1px solid #eee;
        }
        .custom-dialog-content {
            margin: 10px 0;
            white-space: pre-wrap;
            word-break: break-word;
        }
        .custom-dialog-footer {
            text-align: right;
            margin-top: 15px;
            padding-top: 10px;
            border-top: 1px solid #eee;
        }
        .custom-dialog-button {
            padding: 8px 15px;
            background: #4CAF50;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
        .custom-dialog-button:hover {
            background: #45a049;
        }
    `);

    // 创建自定义对话框
    function showCustomDialog(content) {
        const dialog = document.createElement('div');
        dialog.className = 'custom-dialog';

        dialog.innerHTML = `
            <div class="custom-dialog-header">剪贴板内容</div>
            <div class="custom-dialog-content">${content}</div>
            <div class="custom-dialog-footer">
                <button class="custom-dialog-button">关闭</button>
            </div>
        `;

        document.body.appendChild(dialog);

        // 添加关闭按钮事件
        const closeButton = dialog.querySelector('.custom-dialog-button');
        closeButton.addEventListener('click', () => {
            document.body.removeChild(dialog);
        });
    }

    // 读取剪贴板并显示内容
    async function showClipboardContent() {
        try {
            const text = await navigator.clipboard.readText();
            if (text) {
                // 对文本进行HTML转义,防止XSS攻击
                const escapedText = text
                    .replace(/&/g, '&amp;')
                    .replace(/</g, '&lt;')
                    .replace(/>/g, '&gt;')
                    .replace(/"/g, '&quot;')
                    .replace(/'/g, '&#039;');
                showCustomDialog(escapedText);
            } else {
                showCustomDialog('剪贴板为空');
            }
        } catch (err) {
            showCustomDialog('无法读取剪贴板内容。\n请确保已授予网站剪贴板访问权限。\n\n错误信息:' + err.message);
        }
    }

    // 注册右键菜单命令
    GM_registerMenuCommand('📋 显示剪贴板内容', showClipboardContent);

    // 添加右键菜单事件监听
    document.addEventListener('contextmenu', function(e) {
        // 可以在这里添加自定义的右键菜单逻辑
        // 注意:由于浏览器安全限制,直接修改原生右键菜单可能受限
    });
})();

@ffgg536956 ffgg536956 changed the title 编写的油猴脚本居然无法在脚本猫中运行 编写的油猴脚本居然在脚本猫中运行后无任何反应 Nov 7, 2024
@CodFrm
Copy link
Member

CodFrm commented Nov 7, 2024

QQ_1730951566155

看一下网站的这个权限是开启的吗?

我这边测试是可以的

QQ_1730951652090

代码实现中也是使用const text = await navigator.clipboard.readText();实现的,和扩展的读取剪辑版权限没啥关系

另外哥哥,试试重新加载页面,或者扩展呢?这个有点像是点击菜单没有触发菜单事件

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants