Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Выделение внутри div (https://javascript.ru/forum/jquery/30289-vydelenie-vnutri-div.html)

Freakmeister 30.07.2012 16:50

Выделение внутри div
 
Поставил себе на phpBB мод, позволяющий делать "быстрые цитаты" (это когда ты выделяешь текст в посте, кликаешь по кнопке "быстрой цитаты", и выделенный текст прыгает в форму быстрого ответа). Сразу заметил недоработку - текст можно выделять где угодно на странице, даже если это где-то за пределами поста. Собссна, пытаюсь это дело исправить, чтобы оно брало выделение только из дива "#post555" например. Код для получения выделения используется такой:

if (window.getSelection) {
		theSelection = window.getSelection().toString();
	}
    else if (document.getSelection) {
		theSelection = document.getSelection();
	}
	else if (document.selection) {
		theSelection = document.selection.createRange().text;
	}

Естественно, первым делом пробовал подставить вместо document и window своё значение - $('#post555'). Но скрипт в таком виде почему-то вообще не работает. Возможно ли брать выделение только из нужного блока, а не со всей страницы?

Deff 30.07.2012 17:19

Цитата:

Сообщение от Freakmeister
Поставил себе на phpBB мод, позволяющий делать "быстрые цитаты" (это когда ты выделяешь текст в посте, кликаешь по кнопке "быстрой цитаты", и выделенный текст прыгает в форму быстрого ответа). Сразу заметил недоработку - текст можно выделять где угодно на странице, даже если это где-то за пределами поста. Собссна, пытаюсь это дело исправить, чтобы оно брало выделение только из дива "#post555" например. Код для получения выделения используется такой:

http://forumd.ru/viewtopic.php?id=3053

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

Freakmeister 03.08.2012 15:12

В этом примере тот же самый косяк. Если сначала выделить текст поста, затем выделить текст выше на странице и нажать цитировать - происходит цитата текста за пределами поста. Короче реализация не очень, но идея мне понравилась.) У меня статичная кнопка под каждым постом, попробую менять у неё какой-нибудь attr при $('.post').mouseup, а при $('*:not(.post)').mouseup менять attr всех кнопок цитирования на обратный. И от этого attr уже плясать - активна кнопка или неактивна.)

Deff 03.08.2012 15:17

Freakmeister,
В неужатом - первом Варианте = парсит тоолько в сообщении - но - по юзу тысчёнки форумов - больше нравиться вторая версия - там произвольная картинка устанавливаемая владельцем форума - нареканий на копирование за пределы поста - не было(это более 30-40 т пользователей (инфо полугода использования)

Deff 03.08.2012 15:32

Freakmeister,
Гы - есть идея-хак: Как метод отсутствия выхода выделения за пределы div
1. Остлеживаем событие моusedown в нашем блоке, - по нему меряем высоту - ширину нашего div - выставляем ему принудительно высоту - ширину на пару пикселов меньше и добавляем overflow:hidden. В скроллируемом блоке - selection не выходит за его пределы, при убирании мыши с div -удаляем добавленные свойства

Freakmeister 03.08.2012 15:36

Не красиво. У меня была ещё идея при нажатии кнопки цитирования под постом, брать содержимое поста через text или val, убирать из него html и потом искать в нём выделенный текст. Но походу нашёлся вариант лучше:
http://stackoverflow.com/questions/5...ery-javascript

Deff 03.08.2012 15:38

Цитата:

Сообщение от Freakmeister
Не красиво.

:) Почему ? изменения размеров поста - не будет - скролл скрыт


Часовой пояс GMT +3, время: 12:58.