Почему не работает document.execCommand("copy")?
document.execCommand(«copy») работает :

Однако, если я открою всплывающее окно, document.execCommand(«copy») не сработает

Кто-нибудь знает причину этого, пожалуйста?
Вот мой весь код:
2 ответа
Вот мой рабочий пример функции copyTextToClipboard . Попробуйте добавить вызов textArea.focus .
Вот причина проблемы:
Следующий код не работает, когда есть наложение документа. Например, когда вызывающий объект находится в div с более высоким z-индексом или что-то в этом роде. Я не уверен, что именно вызывает сбой этого кода. Но это, похоже, связано с наложениями, фокусируемыми элементами или чем-то еще. Дело в том, что, когда тело документа скрыто, созданная текстовая область не может фокусироваться и не работает.
Вместо того, чтобы добавлять текстовую область в тело документа, ее можно добавить к самой вызывающей программе. Следовательно, она всегда будет на переднем плане. Это предполагает, что текст для копирования короткий, так что выполнение выполняется достаточно быстро, чтобы пользователь не заметил создание и удаление текстовой области.
execCommand не работает
Суть проблемы: есть поле textarea, вверху ссылки. При клике на ссылку должен форматироваться текст, но этого не происходит. Вот код:
![]()
Во-первых, для работы execCommand() необходимо включить designMode или contentEditable — посмотрите, например, в доках Мозиллы. Во-вторых, вы не можете таким образом форматировать текст в textarea — этот элемент всегда хранит только текст. Однако вы можете форматировать текст, например, в диве (перед щелчком по ссылке выделите текст в editDiv ):
Всё ещё ищете ответ? Посмотрите другие вопросы с метками javascript или задайте свой вопрос.
Site design / logo © 2022 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2022.6.10.42345
Нажимая «Принять все файлы cookie», вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
JavaScript execCommand («копировать») не работает
Я не могу использовать команду execCommand(‘copy’), пытаясь скопировать значение, выбранное в опции множественного выбора. iam получает значение в «temp», но значение, которое попадает во temp, не копируется и не попадает в буфер обмена.

Я понимаю, что ваше намерение следующее: вы хотите скопировать значения выбранных опций в буфер обмена, как только вы его выберете.
Когда вы используете document.execCommand(‘copy’) , вы копируете все, что выделено на странице (например, содержимое абзаца или само поле ввода).
Однако загвоздка в том, что выбор опций <select> не считается выделенным текстом. Что еще хуже, если вы хотите инициировать выделение текста с помощью javascript, существуют некоторые ограничения: вы можете вызывать .select() только для элемента <input> или . <textarea>
Вот что я бы сделал: скопировал выбранные параметры в отдельное (невидимое) поле ввода, выбрал его и скопировал из него содержимое.
Вот скрипка, которая может служить демонстрацией: https://jsfiddle.net/Zomry/metcfvcq/13/
Я сломаю это здесь:
Сначала добавьте этот элемент на страницу. Это поле ввода, из которого мы будем копировать содержимое в буфер обмена. Обратите внимание, что я добавил tabindex -1, поэтому вы не можете получить к нему доступ с помощью клавиши табуляции. Я также включил aria-hidden, чтобы программы чтения с экрана знали, что это следует игнорировать.
Затем сделайте поле ввода невидимым, поместив его за пределы экрана (не сработало, если я пробовал display: none или другие трюки)