您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在任何页面上生成文本或当前URL的二维码,支持快捷键 Ctrl+Q 打开窗口
// ==UserScript== // @name 二维码生成器 // @namespace http://tampermonkey.net/ // @version 1.5.1 // @description 在任何页面上生成文本或当前URL的二维码,支持快捷键 Ctrl+Q 打开窗口 // @author wll // @match *://*/* // @grant GM_registerMenuCommand // @grant GM_addStyle // @license AGPL-3.0-or-later // ==/UserScript== (function() { 'use strict'; // 引入qrcode.min.js库 const script = document.createElement('script'); script.src = 'https://cdn.jsdelivr.net/npm/[email protected]/qrcode.min.js'; document.head.appendChild(script); // 添加样式 GM_addStyle(` #qr-generator-modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; border: 1px solid #ccc; padding: 40px; z-index: 1000000; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); border-radius: 8px; max-width: 360px; width: 100%; text-align: center; } #qr-generator-buttons { display: flex; justify-content: center; gap: 10px; margin-top: 10px; } #qr-generator-modal textarea { width: 100%; height: 100px; margin-bottom: 10px; } #qr-close-button { position: absolute; top: 8px; right: 8px; background: none; border: none; font-size: 16px; cursor: pointer; } #qr-code { display: flex; justify-content: center; margin-top: 10px; } .qr-button { background-color: #007BFF; color: white; border: none; padding: 10px 20px; border-radius: 5px; cursor: pointer; font-size: 14px; } .qr-button:hover { background-color: #0056b3; } #qr-error-message { color: red; margin-top: 10px; display: none; } `); // 添加菜单项 GM_registerMenuCommand("打开生成器", openQRCodeGenerator); // 添加快捷键监听器 document.addEventListener('keydown', function(event) { if (event.ctrlKey && event.key === 'q') { // 阻止默认的打印行为 event.preventDefault(); openQRCodeGenerator(); } }); // 创建模态窗口 function openQRCodeGenerator() { // 检查是否已经有模态窗口 if (document.getElementById('qr-generator-modal')) { return; } // 创建模态窗口 const modal = document.createElement('div'); modal.id = 'qr-generator-modal'; modal.innerHTML = ` <button id="qr-close-button">×</button> <h1>二维码生成器</h1><br/> <textarea id="qr-text-input" placeholder="输入文本"></textarea><br/> <div id="qr-generator-buttons"> <button id="qr-generate-button" class="qr-button">快速生成</button> <button id="qr-reset-button" class="qr-button">重置</button> <button id="qr-url-button" class="qr-button">网址转码</button> </div><br/> <div id="qr-error-message">请输入文本内容</div> <div id="qr-code"></div> `; document.body.appendChild(modal); // 绑定事件 document.getElementById('qr-generate-button').addEventListener('click', generateQRCode); document.getElementById('qr-reset-button').addEventListener('click', resetFields); document.getElementById('qr-url-button').addEventListener('click', generateURLQRCode); document.getElementById('qr-close-button').addEventListener('click', () => modal.remove()); // 自动获取输入焦点 document.getElementById('qr-text-input').focus(); } // 生成二维码信息 function generateQRCode() { const inputText = document.getElementById("qr-text-input").value; const errorMessage = document.getElementById("qr-error-message"); const qrcodeContainer = document.getElementById("qr-code"); if (!inputText.trim()) { // 显示错误消息 errorMessage.style.display = "block"; // 自动获取输入焦点 document.getElementById('qr-text-input').focus(); return; } // 隐藏错误消息 errorMessage.style.display = "none"; // 清空之前的二维码 qrcodeContainer.innerHTML = ""; new QRCode(qrcodeContainer, { text: inputText, width: 256, height: 256 }); } // 重置生成信息 function resetFields() { // 清空文本域 document.getElementById("qr-text-input").value = ""; // 清空二维码 document.getElementById("qr-code").innerHTML = ""; // 隐藏错误消息 document.getElementById("qr-error-message").style.display = "none"; // 自动获取输入焦点 document.getElementById('qr-text-input').focus(); } // 将当前网址URL转换成二维码 function generateURLQRCode() { const currentURL = window.location.href; // 清空之前的二维码 const qrcodeContainer = document.getElementById("qr-code"); qrcodeContainer.innerHTML = ""; new QRCode(qrcodeContainer, { text: currentURL, width: 256, height: 256 }); } })();