Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как получить тот кусок текста который сейчас видно на экране ? (https://javascript.ru/forum/misc/36532-kak-poluchit-tot-kusok-teksta-kotoryjj-sejjchas-vidno-na-ehkrane.html)

megaupload 19.03.2013 07:10

рони,
ха, точно, мы же так определяли фзическую позицию курсора в textarea, все забыли а ты крут)

mitiya 19.03.2013 16:16

мне вот как раз надо на большом тексте (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 бить, плюс это вообще можно сделать сразу один раз и вообще на сервере.

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

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

megaupload 19.03.2013 16:27

var _this = $(this);
var $this = $(this);

mitiya 19.03.2013 22:45

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


не пойму что-то от куда это val берется, и i тоже?

Hekumok 19.03.2013 22:55

mitiya, это передаются аргументы в функцию

рони 19.03.2013 23:01

mitiya,
http://api.jquery.com/jQuery.each/

nikita.mmf 19.03.2013 23:13

В каких браузерах это должно работать? Есть метод document.elementFromPoint, который поможет отфильтровать элементы и затем уже применить способ рони

mitiya 20.03.2013 00:42

хотя бы во всех современных, включая мобильные

danik.js 20.03.2013 07:06

А вариант использования моноширинного шрифта не подходит?

mitiya 20.03.2013 10:40

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

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


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