Браузер Microsoft Edge, как читать данные буфера обмена

Я не могу прочитать данные буфера обмена в браузере Microsoft Edge. я использую приведенный ниже javascript.

if (window.clipboardData && window.clipboardData.getData) { // IE
       pastedText = window.clipboardData.getData('Text');
 } else if (e.clipboardData && e.clipboardData.getData) {   //non-IE
       pastedText = e.clipboardData.getData('text/plain');
 }

Ни один из блоков if/elseif не выполняется в Edge. я пытался использовать

e.originalEvent.clipboardData.getData('text/plain');

Но я получаю «Доступ запрещен». ошибка.

Дайте мне знать, если кто-нибудь знает, как решить эту проблему.


person Ramesh Chandra    schedule 20.08.2015    source источник


Ответы (2)


Edge в настоящее время не поддерживает API буфера обмена, но рассматривается и, вероятно, будут добавлены в ближайшее время.

person Patrick    schedule 20.08.2015
comment
Можете ли вы предоставить ссылку или что-то, где вы узнали, что это будет добавлено в ближайшем будущем? Дорожная карта развития Edge или что-то в этом роде. - person Sнаđошƒаӽ; 28.11.2018
comment
Отлично. Ваш первоначальный ответ был в 2015 году, а спустя 4 года Edge все еще не поддерживает API буфера обмена. А теперь вы, ребята, собираетесь делать лезвие на основе хрома, и это хорошо. Кстати, я думаю, вы должны добавить к своему ответу, что вы работаете на грани, как PS или что-то в этом роде. - person Sнаđошƒаӽ; 05.01.2019

У меня нет edge, но похоже, что у вас нет прав доступа к данным буфера обмена. Это на веб-сайте или вы вызываете это из скрипта JavaScript, выполняемого локально?

Убедитесь, что сайт находится в доверенных сайтах.

См. https://w3c.github.io/clipboard-apis/#clipboard-event-interfaces, а точнее:

12.1 Вопросы конфиденциальности

Ненадежные скрипты не должны получать неконтролируемый доступ к данным буфера обмена пользователя. Эта спецификация предполагает, что предоставление доступа к текущим данным буфера обмена, когда пользователь явно инициирует операцию вставки из доверенного хрома пользовательского агента, допустимо. Тем не менее, разработчики должны действовать осторожно и как минимум соблюдать следующие меры предосторожности:

Объекты, реализующие интерфейс DataTransfer для возврата данных буфера обмена, не должны быть доступны за пределами обработчика событий ClipboardEvent. Если сценарий хранит ссылку на объект, реализующий интерфейс DataTransfer для использования вне обработчика событий ClipboardEvent, все методы должны быть неоперабельными при вызове вне ожидаемого контекста. Реализации не должны позволять сценариям создавать синтетические события буфера обмена для получения доступа к реальным данным буфера обмена, за исключением случаев, когда это настроено. Реализации не должны позволять сценариям вызывать document.execCommand('paste'), если только пользователь явно не разрешил это.

Реализации могут дополнительно ограничить функциональные возможности, предоставляемые интерфейсом DataTransfer. Например, реализация может позволить пользователю отключить этот API или настроить, каким веб-сайтам должен быть предоставлен доступ к нему.

person thecarpy    schedule 20.08.2015
comment
Я использую этот javascript на своем веб-сайте и в настоящее время тестирую его локально. - person Ramesh Chandra; 20.08.2015