Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.03.2013, 07:10
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

рони,
ха, точно, мы же так определяли фзическую позицию курсора в textarea, все забыли а ты крут)
Ответить с цитированием
  #12 (permalink)  
Старый 19.03.2013, 16:16
Кандидат Javascript-наук
Отправить личное сообщение для mitiya Посмотреть профиль Найти все сообщения от mitiya
 
Регистрация: 13.01.2011
Сообщений: 114

мне вот как раз надо на большом тексте (1-2 миллиона знаков).

надо бы придумать что-то.

я вот если честно все равно не совсем понимаю как это работает.
вот тут я так понимаю происходит разбиение на блоки

$('body div').contents().each(function(){
        if(this.nodeType == 3)
        {
            var _this = $(this);
            var _swap = $('<div id="textnodewrapper' + tmp_id + '" />');
            $.each(_this.text().split(' '),function(i,val){
                if($.trim(val).length > 0)
                {
                    _swap.append('<span class="textnode">' + val + '</span>');
                }
            });
            _swap.insertBefore(_this);
            _this.remove();
        }
        tmp_id++;
    });


я так понимаю делится по словам. в принципе мне не нужна точность до слова. можно по 5 бить, плюс это вообще можно сделать сразу один раз и вообще на сервере.

но вот как сделать так чтоб при определении видно или нет кусок, не приходилось пробегать весь текст.

на ум пока приходит только иерархическая разбивка
Ответить с цитированием
  #13 (permalink)  
Старый 19.03.2013, 16:27
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

var _this = $(this);
var $this = $(this);
Ответить с цитированием
  #14 (permalink)  
Старый 19.03.2013, 22:45
Кандидат Javascript-наук
Отправить личное сообщение для mitiya Посмотреть профиль Найти все сообщения от mitiya
 
Регистрация: 13.01.2011
Сообщений: 114

$.each(_this.text().split(' '),function(i,val){
                if($.trim(val).length > 0)
                {
                    _swap.append('<span class="textnode">' + val + '</span>');
                }
            });


не пойму что-то от куда это val берется, и i тоже?
Ответить с цитированием
  #15 (permalink)  
Старый 19.03.2013, 22:55
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

mitiya, это передаются аргументы в функцию
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #16 (permalink)  
Старый 19.03.2013, 23:01
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

mitiya,
http://api.jquery.com/jQuery.each/
Ответить с цитированием
  #17 (permalink)  
Старый 19.03.2013, 23:13
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

В каких браузерах это должно работать? Есть метод document.elementFromPoint, который поможет отфильтровать элементы и затем уже применить способ рони
Ответить с цитированием
  #18 (permalink)  
Старый 20.03.2013, 00:42
Кандидат Javascript-наук
Отправить личное сообщение для mitiya Посмотреть профиль Найти все сообщения от mitiya
 
Регистрация: 13.01.2011
Сообщений: 114

хотя бы во всех современных, включая мобильные
Ответить с цитированием
  #19 (permalink)  
Старый 20.03.2013, 07:06
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А вариант использования моноширинного шрифта не подходит?
Ответить с цитированием
  #20 (permalink)  
Старый 20.03.2013, 10:40
Кандидат Javascript-наук
Отправить личное сообщение для mitiya Посмотреть профиль Найти все сообщения от mitiya
 
Регистрация: 13.01.2011
Сообщений: 114

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

Вообще, document.elementFromPoint вроде как работает во всех браузерах сейчас, так что это может быть каким не каким решением.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вытянуть кусок текста из адреса? GuitarFan Events/DOM/Window 3 30.09.2012 19:20
пытаюсь заменить часть текста в html который вроде как в переменной. mitiya Общие вопросы Javascript 4 22.03.2012 18:16