Hold Alt click on text, Copy as plain text. Alt + Shift click on text, Copy as kebab-case.
当前为
// ==UserScript==
// @name Copy it
// @name:zh-CN 便捷复制
// @namespace https://github.com/xianghongai/Tampermonkey-UserScript
// @version 1.1.0
// @description Hold Alt click on text, Copy as plain text. Alt + Shift click on text, Copy as kebab-case.
// @description:zh-CN 按住 Alt 键点击文本,复制为纯文本。Alt + Shift 复制为 kebab-case 风格字符。
// @author Nicholas Hsiang
// @icon https://xinlu.ink/favicon.ico
// @match http*://*/*
// @grant GM_setClipboard
// @license MIT
// ==/UserScript==
(function () {
'use strict';
document.addEventListener('click', listener, false);
function listener(event) {
if (event.altKey) {
event.preventDefault();
event.stopPropagation();
const text = getText(event.target);
if (event.shiftKey) {
return copyTextToClipboard(toKebab(text));
}
return copyTextToClipboard(text);
}
}
const VALUE_CONTROLLER = ['INPUT', 'TEXTAREA'];
function getText(el) {
let text = '';
if (VALUE_CONTROLLER.includes(el.tagName)) {
const value = `${el.value}`.trim();
const placeholder = el.placeholder ?? '';
text = value === '' ? placeholder : value;
} else if (el.tagName === 'SELECT') {
const selectedOption = el.options[el.selectedIndex];
text = selectedOption.text;
} else {
text = el.innerText;
}
return text.trim();
}
function toKebab(input) {
if (typeof input === 'string') {
return input
.replace(/[\W\s]/gi, '-')
.replace(/([a-z0-9])([A-Z])/g, '$1-$2')
.replace(/([A-Z])([A-Z])(?=[a-z])/g, '$1-$2')
.toLowerCase();
}
}
function copyTextToClipboard(text) {
GM_setClipboard(text, 'text');
}
})();