Open source FBE

Программы, утилиты

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 2:53

SeNS
Тот пример, на который я дал ссылку, работает так: вставляются два маркера (теги B с пустым innerHTML) - в начале и конце выделения, потом производится изменение inner/outerHTML, потом выделяется - select()-ом - текстовый диапазон, границами совпадающий с маркерами, потом маркеры удаляются. Почему-то вставка маркера для выделения нулевой длины не срабатывает, когда я храню скрипт в отдельном html-файле, который открываю в IE. Но такая же вставка срабатывает в FBE в скрипте "Добавление сноски". Я не могу понять, что создает такую разницу между двумя этими случаями, но, может, мой код у тебя будет работать в FBE и с нулевой длиной?
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 3:14

Сказав "мой код", я имел в виду не "Добавление сноски", а пример, на который давал ссылку.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 13:58

Вот скрипт FBE, который изменяет innerHTML абзаца под курсором (каждый второй символ выделяется тегом зачеркивания), сохраняя позицию выделения, даже если оно нулевой длины. Единственно, позиция неверно восстанавливается, если курсор стоит в самом начале строки, тогда после изменения innerHTML он оказывается в конце предыдущей строки, но это можно скорректировать. Я постараюсь поправить код для этого случая, просто, может, ты быстрее меня с этим справишься.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение SeNS » Пн янв 25, 2010 20:50

Не заработал пока метод, в C++ более строгий кастинг, чем в джава-скрипте.
Судя по коду:
Код: выделить все
  var marker1=document.getElementById("sensId1");
  var marker2=document.getElementById("sensId2");

marker1 и marker2 - это MSHTML::IHTMLElement.

Но у MSHTML::IHTMLElement нет метода removeNode. Не пойму, как прокастить правильно.

Ну, и, конечно, код выглядит просто чудовищно. Это, естественно, не к тебе претензия, а к мелкософтовцам. Блин, написали столько месса вокруг своего MSHTML-я, а такую простую и естественную функцию приходится делать через Ж :(
WBR, SeNS
Аватар пользователя
SeNS
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 127
Зарегистрирован: Пт окт 21, 2005 19:20
Откуда: Boston, MA

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 21:08

Как-то через QueryInterface, может. Сейчас поищу.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 21:10

To get an IHTMLDOMNode interface pointer for an element, call QueryInterface on an IHTMLElement interface pointer, an IHTMLElement2 interface pointer, an IHTMLElement3 interface pointer, or anIHTMLElement4 interface pointer.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 21:15

Я пофиксил ту проблему, о которой говорил, в скрипте для FBE. Вот измененная версия, теперь вроде работает без ошибок.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 21:17

Скажи, а что это такое - месс?
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение SeNS » Пн янв 25, 2010 21:57

Вроде, заработало (правда, не смог скачать исправленный скрипт - file not found), есть еще глюки. В частности, не вызывается сразу-же перерисовка почему-то. Может, потому, что я использую тег < Q > ? (но мне его, в силу уникальности и не встречаемости в fb2 очень удобно чистить из строки).

Mess (eng.) - это а) беспорядок; путаница, неразбериха;
WBR, SeNS
Аватар пользователя
SeNS
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 127
Зарегистрирован: Пт окт 21, 2005 19:20
Откуда: Boston, MA

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 22:00

Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 22:07

не вызывается сразу-же перерисовка почему-то.
При программировании на JavaScript документ перерисовывается в промежутки между выполнением кода и еще в некоторых случаях, например при вызове alert(). Поэтому, когда надо было принудительно перерисовать документ, я часть кода, которую следует исполнить после принудительной перерисовки, помещал в отдельную функцию и программировал вызов ее по таймеру с нулевой задержкой (функция SetTimeout()). В C++, может, по-другому делать можно/нужно.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение SeNS » Пн янв 25, 2010 22:38

Imho, явный глюк MSHTML. Ведь HTML код поменялся, и редактор IE об этом знает... Буду искать workaround.
WBR, SeNS
Аватар пользователя
SeNS
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 127
Зарегистрирован: Пт окт 21, 2005 19:20
Откуда: Boston, MA

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 22:45

Пользователю лучше не видеть промежуточные шаги изменения документа скриптом. Вот функция принудительной перерисовки не помешала бы.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Re: Open source FBE

Сообщение SeNS » Пн янв 25, 2010 23:00

Sclex писал(а):Пользователю лучше не видеть промежуточные шаги изменения документа скриптом. Вот функция принудительной перерисовки не помешала бы.

Или трасакционная система: что-то типа beginUpdateHTML() <-> endUpdateHTMP();

P.S. Не подскажешь, есть-ли какой-нибудь event по отрисовке страницы (может, изменение selection?) На больших документах спелл-чек всего документа работает слишком долго...
Т.е. что хочется: получить управление, когда новый текст возникает на экране, взять selection видимого текста, сделать spell-check и подчеркнуть слова.
WBR, SeNS
Аватар пользователя
SeNS
Зрелый участник форума
Зрелый участник форума
 
Сообщений: 127
Зарегистрирован: Пт окт 21, 2005 19:20
Откуда: Boston, MA

Re: Open source FBE

Сообщение Sclex » Пн янв 25, 2010 23:46

SeNS писал(а):Не подскажешь, есть-ли какой-нибудь event по отрисовке страницы (может, изменение selection?)
Самое близкое по смыслу, что я знаю, - document.body.onscroll (генерится при прокрутке документа). Список всех событий DHTML здесь.
Может, ну его вообще нафик, это подчеркивание?
Мне лично важнее возможность проверить документа от начала до конца с помощью диалога.
Написанные мной скрипты FBE лежат здесь.
Sclex
Постоянный участник форума
Постоянный участник форума
 
Сообщений: 752
Зарегистрирован: Сб сен 24, 2005 23:36
Откуда: Белоруссия

Пред.След.

Вернуться в Сделано для FB

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1