Comments 9
Спасибо. В свое время намучался с рэнжами и WYSIWYG для ie
1. не надо ничего имитировать — оба интерфейса убоги чуть менее чем полностью.
2. что там не так с иешным текстовым диапазоном? он емнип более функционален, чем криво слизанный с него в3цшный.
3. 41кб для такой нехитрой штуки — это полный пипец.
4. ну неужели не зарегать хостинг на каком-нибудь jino-net.ru и не выложить скрипт туда?
2. что там не так с иешным текстовым диапазоном? он емнип более функционален, чем криво слизанный с него в3цшный.
3. 41кб для такой нехитрой штуки — это полный пипец.
4. ну неужели не зарегать хостинг на каком-нибудь jino-net.ru и не выложить скрипт туда?
TextRange и Range совершенно разные вещи по сути. Для TextRange не существует понятия текстовой ноды (что противоречит всем стандартам). Свойства TextRange могут устанавливаться в зависимости от непонятных хотелок IE. В Range всё однозначно и удобно: вот тебе контейнеры выделения вот тебе смещения. В TextRange определение этого происходит через задний проход.
гм… при чём тут текстовые ноды? можно более конкретно про непонятные хотелки?
в текстранже можно задавать смещение не только в символах, но и в словах и предложениях, что архиудобно.
в текстранже можно задавать смещение не только в символах, но и в словах и предложениях, что архиудобно.
Дело в том что html документ состоит не только из слов и предложений (текстовые ноды). В мозилле я могу поставить конец и начало ранга или выделения с большой точностью. В IE задав смещение с помощью textrange вы уже не будете точно уверены где у вас начало или конец. Например задайте текстренджевскими смещениями:
{any_text}other_text
чтобы диапазон стоял внутри фигурных скобочек, а потом проврапте его каким-нибудь тегом. Думаю столкнётесь с проблемой. Потому что текстрендж будет где угодно только не там где вы его ожидаете увидить.
Айм сорри
вот в таком
<i>{<b>any_text</b>}</i>other_text
вот в таком
<i>{<b>any_text</b>}</i>other_text
я так понимаю, что не понятно как спозиционируется — снаружи тэга или снутри?
В общем то да. IE обычно выкидывает диапазон наружу (то есть описаное выше действие при помощи TextRange сделать то и нельзя). А если у вас див стоит за который выходить нельзя то получается каша. Многое так же зависит от вида ноды. Если br то один расклад если пустая нода то IE её вообще не видит, если блочный элемент то диапазон обязательно внутрь зайдёт. И тд и тп.
дык там когда позиционируешься, емнип, указываешь родительскую ноду. соответственно он и старается позиционироваться поближе к ней — наружу.
я, к слову, вообще отказался от динамического изменения встроенными средствами (причём, гланым образом из-за оперы) — запоминаю позиции начала и конца, сериализую в хтмл, удаляю весь мусор (от того же ворда, например), добавляют подсветку, перемещаю маркеры куда нужно, преобразую в дом и позиционирую выделение на маркеры.
я, к слову, вообще отказался от динамического изменения встроенными средствами (причём, гланым образом из-за оперы) — запоминаю позиции начала и конца, сериализую в хтмл, удаляю весь мусор (от того же ворда, например), добавляют подсветку, перемещаю маркеры куда нужно, преобразую в дом и позиционирую выделение на маркеры.
Sign up to leave a comment.
W3C Range for Internet Explorer