копировать в буфер обмена - не работает в FF, Chrome
Я использую ниже упомянутый javascript для копирования текста в буфер обмена. Его работа в IE, но не работает в Firefox и Chrome.
пожалуйста, посоветуйте мне, что случилось?
function setDataToclipboard()
{
var str=document.getElementById("populatedString").value;
if (window.clipboardData && clipboardData.setData) {
clipboardData.setData("Text", str);
alert("Copied!");
}
}
5 ответов
W3C clipboard api реализован всеми браузерами http://caniuse.com/#feat=clipboard
манипуляция буфером обмена не является кросс-браузерной. Для кросс-браузерного решения вам нужна flash.
посмотрите на эту библиотеку https://github.com/jonrohan/ZeroClipboard
Вы можете использовать ZeroClipboard следующим образом:
<button id="my-button" data-clipboard-text="Copy me!">Copy to Clipboard</button>
<script>
var clip = new ZeroClipboard(document.getElementById('my-button'));
</script>
при нажатии на кнопку текст Copy me!
будет помещен в буфер обмена.
для получения дальнейших инструкций проверьте API библиотеки https://github.com/jonrohan/ZeroClipboard/blob/master/docs/instructions.md
Я думаю окне.clipboardData-это только IE. Доступ к буферу обмена является проблемой безопасности, и, следовательно, не может быть легко сделано в FF или Chrome.
пожалуйста, смотрите эту ветку: Как скопировать в буфер обмена в JavaScript?
посмотреть документация clipboardData
, в частности раздел, который гласит:
нет стандартов, которые применяются здесь.
вы используете проприетарные Microsoft gubbins, поэтому не следует ожидать, что он будет работать на других браузерах.
посмотреть этот вопрос для кросс-браузерных методов доступа к буферу обмена.
здесь проект стандарта для доступа к буферу обмена но Я не знаю никаких реализаций этого в дикой природе (и canIuse не знает ни одного из них).
недавно у меня была такая же проблема с Chrome и другими браузерами. Однако недавно я обнаружил, что этот код работает в поле contenteditable в некоторых браузерах:
clipboard = e.originalEvent.clipboardData;
clipboard.setData('text/plain', plainData);
clipboard.setData('text/html', htmlData);
Примечание: e в этом случае является событием копирования и/или вырезания. Это событие срабатывает и извлекается в onCopy()
или onCut()
действие.
этот код подтвержден для работы в последних версиях следующих браузеров:
- Chrome (ПК/Mac и Android)
- Android 4.4 + WebView (пока вы обновляете из Play Store) - > хорошие новости для разработчиков Android
- в Firefox
- Safari (только для Mac)
Internet Explorer, похоже, работает с window.clipboardData.setData
вместо этого, но имейте в виду, что буфер обмена IE будет принимать только 'text'
и 'url'
данные.
хотя следующие браузеры могут получить доступ к объекту системного буфера обмена, они не могут установить данные в буфер обмена с помощью clipboard.setData
:
- MS Край
- дает
UntrustedDragDrop
объект в буфер обмена вместо этого... - кроме того, setData возвращает true... когда это не работает. setData возвращает undefined во всех других браузерах
- дает
- Android WebView - > ниже 4.4
- iOS Safari и WebView-yay iOS!