Быстрый и надёжный хостинг на SSD-дисках от 165р в месяц   •   Реклама
4 715 просм
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
комментариев
Форма комментирования этой статьи скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 0
    803
      •  Администратор
    4 апр в 23:47

    Константин, прошу прощение за ожидание.

    $("#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
    3
      •  Пользователь
    31 мар в 14:10

    Могу скинуть ссылку на тот скрипт

    • 0
    803
      •  Администратор
    31 мар в 14:08

    Константин, подумаю сегодня-завтра над этим и отпишусь.

    • 0
    3
      •  Пользователь
    31 мар в 14:07

    Одновременно, я в сети находил скрипт, который по клику на текст весь его выделял, но и давал возможность выбрать отдельное слово. А ваш скрипт при попытке выделить слово, автоматом выделяет все содержимое.

    Но тот скрипт мне не подошел для других целей, а ваш хорош за исключением отсутствия этой опции...

    • 0
    803
      •  Администратор
    31 мар в 13:54

    Константин, то есть сделать возможность выделения отдельный участков, а не всего текста?

    • 0
    3
      •  Пользователь
    31 мар в 13:47

    Добрый день,

    А что нужно добавить в скрипт, чтобы сохранялась возможность выделения фрагментов или отдельных слов в тексте?

    • 0
    766
      •  Гости
    2 сен в 17:02

    У меня несколько блоков коропировать и нет возможности присвоить уникальный id, Как поступить?

    • -1
    803
      •  Администратор
    10 июн в 02:14

    Геннадий, с чего такие выводы?

    • -3
    766
      •  Гости
    9 июн в 16:51

    Ваш скрипт не работает!

Подняться наверх
«Pandoge» - помощник вебмастера