Есть ли какие-либо новые решения для копирования нескольких групп текста в буфер обмена с помощью JavaScript / Flash, начиная с Flash 10?

С момента появления Flash 10 многие популярные скрипты «копирование в буфер обмена» перестали работать из-за новых ограничений безопасности. Здесь есть решение только для Flash:

http://cfruss.blogspot.com/2009/01/copy-to-clipboard-swf-button-cross.html

... хотя я ищу возможность запускать функцию копирования через JS, а не полагаться на то, что пользователь щелкнет объект Flash для запуска.

Пример того, что мы используем в настоящее время, см.

http://snipt.net/public

Любая из ссылок "копировать" здесь использует плагин копирования jQuery:

http://plugins.jquery.com/project/copy

ОБНОВЛЕНИЕ: ОК, я попробовал ZeroClipboard. На первый взгляд все выглядело великолепно. Однако величина избыточный код, необходимый для включения нескольких привязок буфера обмена неприемлема. В некоторых случаях будет более 40 экземпляров текста, каждый из которых имеет свою собственную ссылку для копирования. Все еще ищем лучшее решение ...

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
971
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

Обновление: после долгой паники и нескольких поисков в Google я наткнулся на http://code.google.com/p/zeroclipboard/, который предлагает трюк, совместимый с Flash 10, чтобы копия снова заработала. Теперь об обновлении веб-сайтов ...

Да уж, прискорбно. Более прискорбно, что я действительно не знаю Джек о Flash, поэтому я не могу выкатить свой (своевременно).

Nick Sergeant 15.01.2009 07:24

Выглядит неплохо - штука с zeroclipboard - я проверю, спасибо!

Nick Sergeant 15.01.2009 17:47

ОБНОВЛЕНИЕ: ОК, я попробовал ZeroClipboard. На первый взгляд все выглядело великолепно. Однако количество избыточного кода, необходимого для включения нескольких привязок буфера обмена, неприемлемо. В некоторых случаях будет более 40 экземпляров текста, каждый из которых имеет свою собственную ссылку для копирования. Все еще ищу лучшее решение

Nick Sergeant 15.01.2009 21:55

Это решение работает только для нажатий клавиш, которые вызывают желаемую операцию. Он работает, перемещая курсор пользователя в элемент текстовой области до того, как пользователь завершит соответствующее нажатие клавиши. Работает только для ввода текста. У меня это работает в Firefox и Chrome. IE может использовать объект clipboardData (что предпочтительнее этого взлома).

Где-нибудь в вашем html вы должны создать элемент textarea с произвольно большими строками и атрибутами cols. Элемент «буфер обмена-текстовое поле» будет областью хранения для вставленных и скопированных данных. Я скрываю элемент, используя некоторые атрибуты стиля.

Сценарий:

var desiredClipboardContents = 'It works';

function onCopyKeyPressed() {
   // The trick here is to populate the textarea with
   // the text you want copied before the user releases
   // the copy keystroke.
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = desiredClipboardContents;
   textarea.focus();
   textarea.select();
}

function onPasteKeyPressed() {
   var textarea = document.getElementById('clipboard-textarea');
   textarea.value = '';
   textarea.focus();
   // The trick here is to delay slurping the content
   // that arrives in the textarea element until after
   // the paste keystroke is completed. The 750 ms timeout
   // provides the necessary delay.
   setTimeout("finishedPasting", 750);
}

function finishedPasting() {
   var textarea = document.getElementById('clipboard-textarea');
   alert("Received from clipboard-paste: " + textarea.value);
}

Это не сработает для моей проблемы. У меня есть текст, который уже был отображен на странице, который нужно скопировать в буфер обмена, без необходимости для этого пользователя нажимать Ctrl-C. Кроме того, в моем случае не было бы нажатий клавиш - пользователь нажимает на ссылку, чтобы скопировать текст. См. snipt.net/public.

Nick Sergeant 31.01.2009 05:38

Другие вопросы по теме