Я бы хотел, чтобы пользователи нажимали на ссылку, а затем он выбирал текст HTML в другом элементе (а не во входных данных).
Под «выбором» я подразумеваю то же самое, что и при выделении текста, перетаскивая на него мышку. Это было медведем для исследования, потому что все говорят о «избранном» или «выделении» другими словами.
Это возможно? Мой код до сих пор:
HTML:
<a href="javascript:" onclick="SelectText('xhtml-code')">Select Code</a>
<code id="xhtml-code">Some Code here </code>
JS:
function SelectText(element) {
$("#" + element).select();
}
Я что-то упускаю явно очевидное?
javascript
jquery
Джейсон
источник
источник
Ответы:
Простой Javascript
Вот рабочая демка . Для тех из вас, кто ищет плагин jQuery, я тоже сделал один из них .
JQuery (оригинальный ответ)
Я нашел решение для этого в этой теме . Мне удалось изменить предоставленную информацию и смешать ее с небольшим количеством jQuery, чтобы создать совершенно потрясающую функцию для выделения текста в любом элементе, независимо от браузера:
источник
browser
анализатор.Вот версия, в которой браузер не анализирует и не использует jQuery:
источник
div contentEditable='true'
?Код Джейсона нельзя использовать для элементов внутри iframe (так как область видимости отличается от окна и документа). Я исправил эту проблему и изменил ее для использования в качестве любого другого плагина jQuery (цепного):
Пример 1. Выделение всего текста внутри тегов <code> одним щелчком мыши и добавление класса selected.
Пример 2: При нажатии кнопки выберите элемент внутри Iframe:
Примечание: помните, что источник iframe должен находиться в том же домене, чтобы избежать ошибок безопасности.
Плагин jQuery:
Я тестировал его в IE8, Firefox, Opera, Safari, Chrome (текущие версии). Я не уверен, работает ли он в старых версиях IE (искренне, мне все равно).
источник
Эта тема содержит действительно замечательные вещи. Но я не могу сделать это прямо на этой странице, используя FF 3.5b99 + FireBug из-за «Ошибка безопасности».
Yipee !! Я смог выделить всю правую боковую панель с этим кодом, надеюсь, он вам поможет:
PS: - Я не смог использовать объекты, возвращаемые селекторами jquery, такими как
источник
Вы можете использовать следующую функцию для выбора содержимого любого элемента:
Эта функция может быть вызвана следующим образом:
источник
Я искал то же самое, мое решение было таким:
источник
focus()
не входные данные, о чем этот вопрос.Мне понравился ответ Лепе, за исключением нескольких вещей:
Вот то, что я придумал, с кивком на ответ Лепе для вдохновения. Я уверен, что меня высмеют, поскольку это, возможно, немного жестко (и на самом деле может быть более, но я отвлекся). Но это работает и избегает перехвата браузера, и в этом суть .
Вот и все. Кое-что из того, что вы видите, предназначено для удобства чтения и / или удобства. Протестировано на Mac в последних версиях Opera, Safari, Chrome, Firefox и IE. Также проверено в IE8. Также я обычно объявляю переменные только в том случае, если / когда это необходимо, внутри блоков кода, но jslint предлагает объявить их все вверху. Хорошо, JSLINT.
Редактировать Я забыл включить, как связать это с кодом операции:
ура
источник
setBaseAndExtent()
только потому, что оно существует, кажется мне бессмысленным, когда вы можете просто удалить эту ветку, и все работает так же хорошо и на основе стандартов. Функция обнаружения хороша, но я бы устал от тестирования всего этого довольно быстро.setBaseAndExtent
заключается в том, что он значительно более эффективен, и даже с добавленнымif
statemnent все еще намного больше, чем если бы вы «удалили эту ветку». Я не очень понимаю комментарий "Я бы устал ..."? Запишите это и забудьте, единственное, что вам нужно сделать, это вызвать функцию, а не написать ее. :)setBaseAndExtent
был значительно более производительным, чемaddRange
. С чего бы это? Мой другой комментарий был связан с вашим принципом тестирования возможностей, распространяющимся на все взаимодействия с DOM: очень много кода для тестирования каждого метода и свойства DOM перед его использованием. Я не одобряю; Я просто счастлив подвести черту и сделать несколько допущений в своем коде.Обновленная версия, которая работает в Chrome:
http://jsfiddle.net/KcX6A/326/
источник
Для любого тега можно выбрать весь текст внутри этого тега с помощью этого короткого и простого кода. Он выделит всю область тега желтым цветом и выделит текст внутри него одним щелчком мыши.
источник
Лепе - Это прекрасно работает для меня, спасибо! Я поместил ваш код в файл плагина, а затем использовал его вместе с каждым оператором, чтобы вы могли иметь несколько предварительных тегов и несколько ссылок «Выбрать все» на одной странице, и он выбирает правильный предварительный текст для выделения:
источник
Взгляните на объект Selection (движок Gecko) и объект TextRange (движок Trident). Я не знаю ни о каких фреймворках JavaScript, в которых реализована кросс-браузерная поддержка, но я также никогда не искал его, поэтому Вполне возможно, что даже JQuery есть.
источник
Метод Тима отлично работает для моего случая - выделение текста в div для IE и FF после того, как я заменил следующее утверждение:
со следующим:
Текст в div выбирается щелчком по нему с помощью следующей функции jQuery:
источник
Вот еще одно простое решение для получения выделенного текста в виде строки. Вы можете легко использовать эту строку, чтобы добавить дочерний элемент div в ваш код:
источник
Мой конкретный вариант использования заключался в выборе текстового диапазона внутри редактируемого элемента span, который, насколько я мог видеть, не описан ни в одном из ответов здесь.
Основное отличие заключается в том , что вы должны пройти узел типа
Text
кRange
объекту, как описано в документации Range.setStart () :Text
Узел является первым дочерним узлом двускатного элемента, так , чтобы получить его, доступchildNodes[0]
элемента диапазона. Остальное такое же, как и в большинстве других ответов.Вот пример кода:
Другая соответствующая документация: Выбор
диапазона Document.createRange () Window.getSelection ()
источник
Добавлено
jQuery.browser.webkit
в «еще, если» для Chrome. Не удалось заставить это работать в Chrome 23.Сделал этот скрипт ниже для выбора контента в
<pre>
теге, который имеетclass="code"
.источник
Согласно документации jQuery
select()
:Вот ваше объяснение, почему jQuery
select()
не будет работать в этом случае.источник