Автор Тема: MSO.Word.HTML.CleanUp  (Прочитано 9443 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн .:cRaw:.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« : 23 Июля 2003, 14:56:09 »
Я не супер-знаток javascript, мне ближе vbscript, поэтому функцию я написал на vbscript, а потом уже переводил в javascript? но не без проблем... vb-шная отрабатывает как надо, а та, что на js отрабатывает както странно... требуемый результат достигается только после нескольких исполнений, вместо одного!
в чем ошибка, кто подскажет?
вариант на vbscript:



вариант на javascript:



выше приведенные варианты можно засунуть для тестирования вот сюда:


Word HTML Cleaner


 





Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #1 : 23 Июля 2003, 16:18:30 »
У меня заработал такой вариант:



[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн .:cRaw:.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #2 : 23 Июля 2003, 17:41:52 »
неа... я попробовал...
нифига, как минимум приходится трижды пройтись по грязному html, чтобы получить то, что нужно...

mike, возьми какой-нибудь *.doc, чтобы в нем было форматирование разное... и bold и italic и таблицы и выделение цветом и пр. скопируй из word-а текст и вставь в div. у меня для полной очистки требуется трижды нажать на "Сlean Up HTML".

я алертами все облепил, для проверки и получилось, что он просто перепрыгивает иногда через некоторые ноды, вот это мне и не понятно... (

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #3 : 23 Июля 2003, 17:50:34 »
Цитировать
.:cRaw:.:
mike, возьми какой-нибудь *.doc,

Ну так я на доке и проверял :) VB и JS дают одинаковые результаты.
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #4 : 23 Июля 2003, 17:56:26 »
Хотя таки да, все зависит от файла... :(
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #5 : 23 Июля 2003, 18:03:56 »
А!!! Вспомнил! :)) У меня уже было такое. Во внешнем цикле nodes.length - переменная величина, равно как и во внутреннем - attributes.length. И если ты удаляешь какой-нибудь нод, на его место становится следующий, который пропускается, т.к. счетчик увеличивается. Вот рабочий код (по крайней мере те примеры, что прежний не брал, этот берет):


« Последнее редактирование: 23 Июля 2003, 18:29:21 от mike »
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн .:cRaw:.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #6 : 23 Июля 2003, 18:05:48 »
попробуй с этим файлом: http//:http://www.proga.ru/test.doc
у меня не вычищаются на нем style и class для некоторых тэгов P.
может стоит сделать по аналогии и вынести отдельно cleanup_attribute? :))

еще вопрос. а есть мысли, почему такое происходит?

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #7 : 23 Июля 2003, 18:10:48 »
Цитировать
.:cRaw:.:
попробуй с этим файлом:

Ха! Новый код чистит. ;)
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн .:cRaw:.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #8 : 23 Июля 2003, 18:13:57 »
во! тепрь все рулит! спасибо :)) :super:

тестовый файлик прибиваю...

теперь кстати можно снова вернуться к варианту просто с функцией cleanup() без cleanup_node(), что я уже сделал ))

p.s.: заразливые смайлики кому-нибудь помешают проверить работоспособность ))
« Последнее редактирование: 23 Июля 2003, 18:21:10 от .:cRaw:. »

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #9 : 23 Июля 2003, 18:30:27 »
Цитировать
.:cRaw:.:
p.s.: заразливые смайлики кому-нибудь помешают проверить работоспособность ))

Ну теперь все ОК...
[ основной браузер когда-то был, теперь попробуй разберись =]

Оффлайн Wyclef

  • hello_worlder
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 2
    • Просмотр профиля
    • http://thug.narod.ru
MSO.Word.HTML.CleanUp
« Ответ #10 : 24 Июля 2003, 00:52:24 »
.:cRaw:.
mike

:appl:

Просто - песня!
It\'s nice to be important, but it\'s more important to be nice!

Оффлайн dub

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 236
  • +0/-0
  • 0
    • Просмотр профиля
    • http://binartis.com/
MSO.Word.HTML.CleanUp
« Ответ #11 : 24 Июля 2003, 01:44:18 »
Цитировать
mike:
А!!! Вспомнил! ) У меня уже было такое. Во внешнем цикле nodes.length - переменная величина, равно как и во внутреннем - attributes.length. И если ты удаляешь какой-нибудь нод, на его место становится следующий, который пропускается, т.к. счетчик увеличивается.

Помню, было . Помог тогда очень. До сих пор тебя вспоминаю, когда циклы с удалением пишу :)

.:cRaw:.
кинь свой тест.док, когда не лень, или по ссылке восстанови, хотел на нем свою функцию опробовать. В ней, по сути, все то же, только еще задаются замены для некоторых тегов (\'B\' -> \'STRONG\', например), а разрешенные атрибуты задаются отдельно для каждого тега (например,  для \'TD\' разрешены \'align\', \'vAlign\', \'colSpan\', \'rowSpan\', а для \'U\' - ничего).

Оффлайн .:cRaw:.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #12 : 24 Июля 2003, 12:44:14 »
dub
да там просто так текст от фонаря набран в несколько параграфов, разными шрифтами и разным цветом текста и фона, еще гдето жирный, гдето наклонный, можно еще такблицу всунуть... короче такой документ за 20 секунд слепить можно ))
главное, чтобы разнородного форматирования было побольше!
я делал даже так: брал раельный очень большой doc-файл, копировал из него страниц 50 текста (с довольно сложным форматированием) и пробовал этой функцией расчистить. скажу одно, времени у IE на рендеринг вставляемого текста уходит раз в 10 больше, чем потом на его расчистку.
Цитировать
dub:
задаются замены для некоторых тегов (\'B\' -> \'STRONG\', например), а разрешенные атрибуты задаются отдельно для каждого тега (например, для \'TD\' разрешены \'align\', \'vAlign\', \'colSpan\', \'rowSpan\', а для \'U\' - ничего)

ну... как говорится, хозяин - барин, это дело вкуса ))

Оффлайн .:cRaw:.

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #13 : 24 Июля 2003, 15:03:15 »
и еще в догонку... а как бы это все прикрутить к onpaste?
clipboardData.gatData не прокатывает ((
тут на форуме помоему както проскакивал уже вариант примерно с такойже функцией, но я чтото сейчас не нашел...

Оффлайн mike

  • ProPerl\'er
  • Старожил
  • ****
  • Сообщений: 435
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MSO.Word.HTML.CleanUp
« Ответ #14 : 24 Июля 2003, 15:35:19 »
[ основной браузер когда-то был, теперь попробуй разберись =]

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28