Информер курса валют ЦБ РФ   •   Магазин расширений
3 581 просм
9 комм
Поделиться:

Выделение содержимого div по клику на него + копирование на jQuery

Начну сразу с того, где это может вам пригодиться. Например, на своем сайте вы выкладываете статьи, где частью из них является материал, который пользователь может скачать для себя. Пример – мой сайт. Ниже я представляю код, который вы можете использовать в своих целях.

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

Непосредственно сам скрипт:

<script>

	function selectText(elementId) {
	
		var doc = document,
		text = doc.getElementById(elementId), range, selection;
		
		if(doc.body.createTextRange) {
		
			range = document.body.createTextRange();
			range.moveToElementText(text);
			range.select();
			
		} else if(window.getSelection) {
			
			selection = window.getSelection();
			range = document.createRange();
			range.selectNodeContents(text);
			selection.removeAllRanges();
			selection.addRange(range);

		}
		
	}
	
	$("#content").click(function() {
		
		selectText(this.id);
		document.execCommand("copy");

	});
	
</script>

Код вставляйте перед закрывающим тегом </body>.

Ваш контент, которому необходимо подключить данный функционал, оберните в:

<div id="content">Ваш текст</div>

Данный скрипт включает в себя автовыделение содержания всего блока + его копирование. Если вы не хотите, чтобы было автоматическое копирование, а только его выделение – удалите из скрипта эту строку:

document.execCommand("copy");

Удачных вам разработок!

9
комментариев
9.06 в 16:51
Ваш скрипт не работает!
  • -3
Геннадий, с чего такие выводы?
  • -1
2.09 в 17:02
У меня несколько блоков коропировать и нет возможности присвоить уникальный id, Как поступить?
  • 0
31.03 в 13:47
Добрый день,

А что нужно добавить в скрипт, чтобы сохранялась возможность выделения фрагментов или отдельных слов в тексте?
  • 0
Константин, то есть сделать возможность выделения отдельный участков, а не всего текста?
  • 0
31.03 в 14:07
Одновременно, я в сети находил скрипт, который по клику на текст весь его выделял, но и давал возможность выбрать отдельное слово. А ваш скрипт при попытке выделить слово, автоматом выделяет все содержимое.

Но тот скрипт мне не подошел для других целей, а ваш хорош за исключением отсутствия этой опции...
  • 0
Константин, подумаю сегодня-завтра над этим и отпишусь.
  • 0
31.03 в 14:10
Могу скинуть ссылку на тот скрипт
  • 0
Константин, прошу прощение за ожидание.

$("#content").click(function() {

selectText(this.id);
document.execCommand("copy");

});

замените на:

$("#content").mouseup(function() {

var highlighted_text = "";

if(window.getSelection) {

highlighted_text = window.getSelection().toString();

} else if (document.selection && document.selection.type != "Control") {

highlighted_text = document.selection.createRange().text;

}

if(highlighted_text == "") {

selectText(this.id);
document.execCommand("copy");

}

});
  • 0
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.
Подняться наверх