execCommand('RemoveFormat', ...)
От: Crush Россия http://www.ael.ru/_crush/
Дата: 29.01.03 03:03
Оценка:
Не будет ли так любезен всезнающий All ответить на мой вопрос?

Трабла такая. Используя свойство document.designMode = on, пишу небольшой HTML редактор. Вставляю к примеру текст из Word-а и получаю естественно мудрую кучу мусора в редактируемом коде HTML. С не нужными тегами, причем еще и xml-евскими.
Нашел в MSDN идентификатор для execCommand: RemoveFormat, который по идее должен удалять форматируюшие теги, однако после применения ничего не происходит. Каким код был, таким он и остался...
Пишу так:

var ht = idEditbox.document.selection.createRange();
ht.execCommand("RemoveFormat",false,"");


Вот сижу и думаю — кто дурак? Или MSDN врет или... на этом мысль останавливается...
Не ошибается то, что не работает. (с) Windows
Re: execCommand('RemoveFormat', ...)
От: Vladosha Россия  
Дата: 29.01.03 08:13
Оценка:
Здравствуйте, Crush, Вы писали:

C>Трабла такая. Используя свойство document.designMode = on, пишу небольшой HTML редактор. Вставляю к примеру текст из Word-а и получаю естественно мудрую кучу мусора в редактируемом коде HTML. С не нужными тегами, причем еще и xml-евскими.

Редактор HTML наверно навороченный??
Я писал HTML редактор (визуальный) с помощью DHTML Editing Component. Очень все красиво и выходной код — ничего. Что касается ручного режима вставки, то прежде чем из буфера вставлять какую то фигню из Word'а ее нужно обязательно обработать. Я делал это с помощью регулярных выражений — и только после этого вставлял в HTML редактор. Короче просто так — фиг получится, только если к Word'у обратиться, попросить его записать файл на диск в формате TXT и только после этого вставлять в твой крутой редактор
С уважением, Vladosha.
Re[2]: execCommand('RemoveFormat', ...)
От: Crush Россия http://www.ael.ru/_crush/
Дата: 30.01.03 03:51
Оценка:
Здравствуйте, Vladosha, Вы писали:

VV>Редактор HTML наверно навороченный??

Да нет, но собираюсь его более менее нормально написать

V>Что касается ручного режима вставки, то прежде чем из буфера вставлять какую то фигню из >Word'а ее нужно обязательно обработать. Я делал это с помощью регулярных выражений — и >только после этого вставлял в HTML редактор.

Я думал об этом, но из буфера обмена можно только текст получить... Я же на JavaScript пишу...
Если бы стояла задача только теск вставлять, то я не парился бы. А тут ведь и таблицы и списки будут.

>Короче просто так — фиг получится, только если к Word'у обратиться, попросить его записать >файл на диск в формате TXT и только после этого вставлять в твой крутой редактор

А как из JavaScript к Word-у обратиться? Да рабоиа с файлами в JavaScript тема закрытая. Хотя можно MSDN на эту тему потрепать. Что-то встречал.

Тут еще одна проблема. Не нашел я в JavaScript события, возникающего по окончании вставки.... Нет его. Есть onPaste и onBeforePaste, но они оба возникают до того, как в документ вставка произошла. Проверено.
Не ошибается то, что не работает. (с) Windows
Re[3]: execCommand('RemoveFormat', ...)
От: Vladosha Россия  
Дата: 30.01.03 06:21
Оценка:
Здравствуйте, Crush, Вы писали:

C>Я думал об этом, но из буфера обмена можно только текст получить... Я же на JavaScript пишу...

C>Если бы стояла задача только теск вставлять, то я не парился бы. А тут ведь и таблицы и списки будут.
А кто сказал что я это делал через буфер обмена??? OLE automation, т.е. через Com-интерфейс. И я это делал как ActiveX-контрол, т.е. если есть возможность его установить и запустить на клиенте — без проблем доступ и к файлам, и ко всему необходимому.

C>А как из JavaScript к Word-у обратиться? Да рабоиа с файлами в JavaScript тема закрытая. Хотя можно MSDN на эту тему потрепать. Что-то встречал.

А разве Com-объект в JavaScript уже не создается? Так и вызывать...

C>Тут еще одна проблема. Не нашел я в JavaScript события, возникающего по окончании вставки.... Нет его. Есть onPaste и onBeforePaste, но они оба возникают до того, как в документ вставка произошла. Проверено.

Мне помог вышеописанный ActiveX-control — какие хошь события обрабатываются. Писал на VB6 за неимением много времени и простоты компиляции.
С уважением, Vladosha.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.