Почему не срабатывает execcommand
Перейти к содержимому

Почему не срабатывает execcommand

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

document.execCommand(«copy») работает :

enter image description here

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

enter image description here

Кто-нибудь знает причину этого, пожалуйста?

Вот мой весь код:

2 ответа

Вот мой рабочий пример функции copyTextToClipboard . Попробуйте добавить вызов textArea.focus .

Вот причина проблемы:

Следующий код не работает, когда есть наложение документа. Например, когда вызывающий объект находится в div с более высоким z-индексом или что-то в этом роде. Я не уверен, что именно вызывает сбой этого кода. Но это, похоже, связано с наложениями, фокусируемыми элементами или чем-то еще. Дело в том, что, когда тело документа скрыто, созданная текстовая область не может фокусироваться и не работает.

Вместо того, чтобы добавлять текстовую область в тело документа, ее можно добавить к самой вызывающей программе. Следовательно, она всегда будет на переднем плане. Это предполагает, что текст для копирования короткий, так что выполнение выполняется достаточно быстро, чтобы пользователь не заметил создание и удаление текстовой области.

execCommand не работает

Суть проблемы: есть поле textarea, вверху ссылки. При клике на ссылку должен форматироваться текст, но этого не происходит. Вот код:

user avatar

Во-первых, для работы 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 или другие трюки)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *