Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.07.2012, 16:50
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

Выделение внутри 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'). Но скрипт в таком виде почему-то вообще не работает. Возможно ли брать выделение только из нужного блока, а не со всей страницы?

Последний раз редактировалось Freakmeister, 30.07.2012 в 16:53.
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2012, 17:19
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

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

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

Последний раз редактировалось Deff, 30.07.2012 в 17:22.
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2012, 15:12
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

В этом примере тот же самый косяк. Если сначала выделить текст поста, затем выделить текст выше на странице и нажать цитировать - происходит цитата текста за пределами поста. Короче реализация не очень, но идея мне понравилась.) У меня статичная кнопка под каждым постом, попробую менять у неё какой-нибудь attr при $('.post').mouseup, а при $('*:not(.post)').mouseup менять attr всех кнопок цитирования на обратный. И от этого attr уже плясать - активна кнопка или неактивна.)
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2012, 15:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Freakmeister,
В неужатом - первом Варианте = парсит тоолько в сообщении - но - по юзу тысчёнки форумов - больше нравиться вторая версия - там произвольная картинка устанавливаемая владельцем форума - нареканий на копирование за пределы поста - не было(это более 30-40 т пользователей (инфо полугода использования)
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2012, 15:32
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Freakmeister,
Гы - есть идея-хак: Как метод отсутствия выхода выделения за пределы div
1. Остлеживаем событие моusedown в нашем блоке, - по нему меряем высоту - ширину нашего div - выставляем ему принудительно высоту - ширину на пару пикселов меньше и добавляем overflow:hidden. В скроллируемом блоке - selection не выходит за его пределы, при убирании мыши с div -удаляем добавленные свойства
Ответить с цитированием
  #6 (permalink)  
Старый 03.08.2012, 15:36
Аватар для Freakmeister
Аспирант
Отправить личное сообщение для Freakmeister Посмотреть профиль Найти все сообщения от Freakmeister
 
Регистрация: 15.01.2011
Сообщений: 61

Не красиво. У меня была ещё идея при нажатии кнопки цитирования под постом, брать содержимое поста через text или val, убирать из него html и потом искать в нём выделенный текст. Но походу нашёлся вариант лучше:
http://stackoverflow.com/questions/5...ery-javascript
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2012, 15:38
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Freakmeister
Не красиво.
Почему ? изменения размеров поста - не будет - скролл скрыт
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fade маленького div внутри большого div kenwo0d jQuery 17 19.05.2012 16:27
Скроллить до определенной строки внутри div Putnik Элементы интерфейса 1 15.08.2011 16:52
Как добраться до объекта внутри div#? Randomizer jQuery 8 24.09.2010 12:01
Перемещение div внутри другого Danila74 jQuery 1 24.09.2009 17:31
Как убрать выделение в Опере у div, получившего фокус ? spa_2002 Opera, Safari и др. 5 03.09.2009 10:42