Я использовал некоторые отличные библиотеки буфера обмена, однако обнаружил, что иногда большинство вещей, которые мне нужны, были чем-то простым, я заметил это, увидев работу других разработчиков, которые вместо использования библиотеки использовали основы, которые API для браузеры предоставляют document.execDocument() (хотя и считаются устаревшими).

Я понял, что большая проблема (по крайней мере, для меня) заключается в том, что, хотя библиотеки небольшие и используют сжатие Gzip, на серверах, отключенных для этой функции, это в конечном итоге должно было весить в среднем ~ 2 КБ, в конечном итоге стало ~ 10 КБ. (я имею в виду отдельные библиотеки), я прекрасно понимаю, что есть стратегии сжатия и минификации (которые я всегда использую) и даже некоторая функция «ленивой загрузки», но в этом процессе мне нужно было что-то легкое, не зависящее от большого планирования.

Признаюсь, в начале я не думал о том, чтобы поделиться прототипом библиотеки, но это было достаточно интересно, при использовании на серверах с включенным GZip, библиотека получала ~ 1,2 КБ, при отключенном GZip она получала ~ 2,5 КБ, то есть , то есть минимальная разница (~1 КБ).

Я работаю над тем, чтобы библиотека в будущем использовала ClipboardAPI, сохраняя при этом обратную совместимость со старыми браузерами.

Настроить

Вы можете использовать CDN (jsdelivr) и разместить прямо на своей странице:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/simple-copy.min.js"></script>

Можно скачать из источника: https://github.com/brcontainer/simple-copy.js/blob/0.5.2/simple-copy.min.js

Также можно установить с помощью npm:

npm i simple-copy.js

И используйте с require():

const SimpleCopy = require('simple-copy.js');

Или используйте с модулями ECMAScript:

import SimpleCopy from 'simple-copy.js'

использование

Копирование содержимого из элемента с помощью селектора:

SimpleCopy.copy("<selector>");

Копирование текста из элемента с помощью селектора:

SimpleCopy.copy("<selector>", { "text": true });

Копирование всего элемента с помощью селектора:

SimpleCopy.copy("<selector>", { "node": true });

Копирование содержимого из элемента с помощью селектора:

var element = document.querySelector(".foobar");
SimpleCopy.copy(element);

Копирование текста из элемента с помощью селектора:

var element = document.getElementById("idelement");
SimpleCopy.copy(element, { "text": true });

Копирование всего элемента:

var element = document.getElementsByClassName("<class>");
SimpleCopy.copy(element[0], { "node": true });

Выберите текст в элементе с помощью селектора:

SimpleCopy.select("<selector>");

Выберите содержимое в элементе:

var element = document.querySelector(".foobar");
SimpleCopy.select(element);

Выбрать весь узел:

var element = document.querySelector(".foobar");
SimpleCopy.select(element, { "node": true });

Установить текст в буфер обмена:

SimpleCopy.data("Hello, world!");

Скопируйте содержимое из элемента, определенного в атрибутах данных:

<button data-simplecopy-target="<selector>">Copy</button>

Скопируйте весь элемент, определенный в атрибутах данных:

<button data-simplecopy-target="<selector>" data-simplecopy-node="true">Copy</button>

Выберите содержимое из элемента, определенного в атрибутах данных:

<button data-simplecopy-target="<selector>" data-simplecopy-select="true">Select text</button>

Скопируйте html-контент без формата:

<button data-simplecopy-target="<selector>" data-simplecopy-text="true">Copy</button>

Установить текст в буфер обмена по атрибуту данных:

<button data-simplecopy-data="Hello, world!">Copy text</button>