- JavaScript execCommand (‘copy’) не работает
- 6 ответов
- JavaScript execCommand(‘copy’) not working
- 8 Answers 8
- Document execcommand copy не работает
- Поиск в Поддержке
- document.execCommand(‘copy’) not working
- Выбранное решение
- Все ответы (4)
- Выбранное решение
- Невозможно использовать `document.execCommand (‘copy’);` из консоли разработчика
- 4 ответа
- Невозможно использовать » документ.execCommand (‘копировать’); ‘ из консоли разработчика
- 4 ответов
JavaScript execCommand (‘copy’) не работает
Я не могу использовать execCommand (‘copy’), пытаясь скопировать значение, выбранное в опции множественного выбора. Я получаю значение в «temp», но значение, которое получает в temp, не копирует или не попадает в буфер обмена.
6 ответов
Я понимаю, что ваше намерение заключается в следующем: вы хотите скопировать значения выбранных параметров в буфер обмена, как только вы выберите его.
Когда вы используете document.execCommand(‘copy’) , вы копируете все, что выбрано на странице (например, содержимое в абзаце или в самом поле ввода).
Однако уловка заключается в том, что выбор параметров в не считается выделенным текстом. Хуже того, если вы хотите активировать выделение текста с помощью javascript, существуют некоторые ограничения: вы можете вызвать только . select () для элемента или
Вот что я хотел бы сделать: скопировать выбранные параметры в отдельное (не видимое) поле ввода, выбрать его и скопировать содержимое из него.
Вот скрипка, которая может служить демонстрацией: https://jsfiddle.net/Zomry/metcfvcq/13 /
Я сломаю это здесь:
Сначала добавьте этот элемент на страницу. Это поле ввода, из которого мы будем копировать содержимое в буфер обмена. Обратите внимание, что я добавил tabindex -1, поэтому вы не можете получить доступ к нему с помощью клавиши табуляции. Я также включил скрытую арию, чтобы читатели экрана знали, что это следует игнорировать.
Затем сделайте поле ввода невидимым, отключив его от экрана (не работало, если я попытался отобразить: нет; или другие хитрости)
Затем скопируйте значение в поле ввода, выберите его и скопируйте.
У меня был другой случай, когда команда «копировать» не работала. ExecCommand вернул true, но значение не было скопировано. В моем случае проблема заключалась в функции, которая выполняла команду (точнее, обещание). Может быть, небольшая выборка (используя функцию из ответа Зомры):
Если я правильно интерпретирую, команда должна вызываться в той же итерации выполнения скрипта, которая была вызвана человеком. Поскольку обратный вызов Promise находится в другой итерации, браузер это отрицает (хотя и говорит, что нет). Я не знаю, правда ли это, но код работает для меня, и это нормально;)
Хорошо, мой подход немного проще:
- создать дополнительный ввод с типом «текст»
- при вызове функции скопируйте значение выбранного параметра в дополнительное поле
- задайте абсолютную позицию поля и оставьте -9999, чтобы она существовала в dom, но не в видимой области просмотра!
- сделай все остальное!
Источник
JavaScript execCommand(‘copy’) not working
I am unable to use the execCommand(‘copy’), trying to copy value which is selected in multi-select option. iam getting value in «temp» but the value which is getting in temp not copying or getting in clipboard.
8 Answers 8
I understand that your intention is the following: you want to copy the values of the selected options to the clipboard as soon as you select it.
When you use document.execCommand(‘copy’) , you copy whatever is selected on the page (such as content in a paragraph or in an input field itself).
The catch is however that selecting options in is not considered to be selected text. Worse yet, if you would like to trigger selecting text via javascript, there are some restrictions: you can only call .select() on an or a
Here is what I would do: copy the selected options to a separate (not visible) input-field, select it and copy the content from that.
Here is a fiddle that can serve as a demo: https://jsfiddle.net/Zomry/metcfvcq/13/
I wil break it down here:
First, add this element to the page. This is the input-field where we will copy the content from to the clipboard. Note that I have added tabindex -1 so you cannot reach it via tab key. I also included aria-hidden so screenreaders know it should ignore this.
Then make the input field invisible by putting it off screen (did not work if I tried display: none; or other tricks)
Then copy the value to the input field, select it and copy it.
Источник
Document execcommand copy не работает
Поиск в Поддержке
- Начало
- Форумы поддержки
- Firefox
- document.execCommand(‘copy’) not working
Избегайте мошенников, выдающих себя за службу поддержки. Мы никогда не попросим вас позвонить, отправить текстовое сообщение или поделиться личной информацией. Сообщайте о подозрительной активности, используя функцию «Пожаловаться».
Learn More
document.execCommand(‘copy’) not working
- 4 ответа
- 17 имеют эту проблему
- 963 просмотра
- Последний ответ от bansal5575
I am trying this small piece of code:
It seems to work for Chrome but not for firefox. Does firefox not provide a functionality for copying contents to clipboard. I fyes, what are they because I am definately missing them.
I am getting this error on Browser console: 20:43:49.409 NS_ERROR_FAILURE: 1 try1.html:1:0
Any solutions for copying text to clipboard from firefox browsers?
Выбранное решение
Hi bansal5575, did you follow the link to the bug tracking system? It is scheduled to appear in Firefox 41, which is about 8-9 weeks away from release.
You can test Firefox 41 in its current early form to see whether it meets your needs: https://www.mozilla.org/firefox/developer/
You probably should make a backup of your Firefox profile first. This article has tips on that: Back up and restore information in Firefox profiles.
Все ответы (4)
Firefox doesn’t allow access to the clipboard via scripts. Use keyboard shortcuts if the buttons on the web page or other methods aren’t working.
- Copy: Ctrl+C or Ctrl+Insert (Mac: Command + C)
- Paste: Ctrl+V or Shift+Insert (Mac: Command + V)
- Cut: Ctrl+X or Shift+Delete (Mac: Command + X)
- bug 1012662 — Allow document.execCommand(«cut»/»copy») to be used within the context of user generated events
When Google Chrome seems to be providing a solution for this, why is there no support in firefox? This use case is a very important feature for one of the apps that I am developing and users won’t be pleased having this feature only in chrome and not in firefox.
Выбранное решение
Hi bansal5575, did you follow the link to the bug tracking system? It is scheduled to appear in Firefox 41, which is about 8-9 weeks away from release.
You can test Firefox 41 in its current early form to see whether it meets your needs: https://www.mozilla.org/firefox/developer/
You probably should make a backup of your Firefox profile first. This article has tips on that: Back up and restore information in Firefox profiles.
Источник
Невозможно использовать `document.execCommand (‘copy’);` из консоли разработчика
Вызов document.execCommand (‘copy’) из из консоль разработчика Chrome возвращает false каждый раз.
Попробуйте сами. Откройте консоль и запустите ее, это никогда не удастся.
Есть идеи, почему?
4 ответа
document.execCommand(‘copy’) должен быть запущен пользователем. Это не только из консоли, это где-нибудь, что не находится внутри события, вызванного пользователем. См. Ниже, событие click вернет true, но вызов без события не будет, и вызов в отправленном событии также.
Команды копирования, запускаемые из document.execCommand (), будут влиять на содержимое реального буфера обмена только в том случае, если событие отправлено из события, которому доверяет и запускается пользователем, или если реализация настроена так, чтобы это позволяло. Как реализации могут быть настроены для разрешения доступа на запись в буфер обмена, выходит за рамки данной спецификации.
Этот метод работает в последней версии Safari
В качестве альтернативы используйте copy() , встроенная в инструменты Chrome Dev. Вы не можете использовать document.execCommand(«copy») , потому что это требует действий пользователя для его запуска.
<< Команда X0>> позволяет скопировать любую строку (или объект как JSON). Чтобы подражать document.execCommand(«copy») , вы можете получить текущий выбор с помощью getSelection().toString() :
Если вам нужно на самом деле специально протестировать document.execCommand(«copy») (например, для отладки скрипта, который его использует), и использование отладчика по какой-то причине не идеально, вы можете заключить код в обработчик щелчков и затем нажать твоя страница:
Я считаю, что команда copy требует фокусировки на браузере, и когда вы заходите в консоль и выполняете команду, текущее окно теряет фокус. Но могут быть и другие причины, так как это сработало, если я сдаюсь setTimeout() .
Источник
Невозможно использовать » документ.execCommand (‘копировать’); ‘ из консоли разработчика
вызов документ.execCommand (‘копировать’); из консоли разработчика Chrome возвращает false каждый раз.
попробуйте сами. Откройте консоль и запустите ее, это никогда не удастся.
есть идеи, почему?
4 ответов
document.execCommand(‘copy’) должно быть вызвано пользователем. Это не только из консоли, это везде, где нет внутри события, вызванного пользователем. См. ниже, событие click вернет true, но вызов без события не будет и вызов в отправленном событии также.
копировать команды, запускаемые из документа.кадр execcommand() только повлияет содержимое реального буфера обмена, если событие отправляется из событие, которому доверяют и которое инициирует пользователь, или реализация настроена для этого. Как реализации могут быть настройка разрешения доступа на запись в буфер обмена выходит за рамки этой спецификации.
в качестве альтернативы, используйте copy() команда, встроенная в инструменты Chrome Dev. Вы не можете использовать document.execCommand(«copy») потому что это требует действий пользователя, чтобы вызвать его.
The copy() команда позволяет копировать любую строку (или объект как JSON). Для эмуляции document.execCommand(«copy») вы можете получить текущий выбор с помощью getSelection().toString() :
Если вам нужно на самом деле проверить document.execCommand(«copy») в частности (например, для отладки сценарий, который использует его), и использование отладчика по какой-то причине не идеально, вы можете обернуть свой код в обработчик щелчка, а затем щелкнуть свою страницу:
Я верю, copy команда требует иметь фокус на браузере, и когда вы идете в консоль и выполняете команду, текущее окно теряет фокус. Но могут быть и другие причины, так как это сработало, если я сдамся setTimeout() .
этот метод работает в последней версии Safari
Источник