Сохранение в IE с изменением Source
От: HateBreeder  
Дата: 13.11.03 22:39
Оценка:
Пишу плагин для IE.
Необходимо при сохранении страницы добавлять туда кое-какую инфу.
Я действовать по такому алгоритму:
1. Изменить саму страницу через IHTMLDocument2
2. Вызвать стандартную процедуру сохранения
3. Вернуть страницу в исходный вид
Но это не работает. Сохраняется именно исходная версия страницы. Изменения пропадают.

Как реализовать сохранение, чтобы можно было вносить изменения?

Можно, конечно, сначала сохранить исходный вариант, а потом в нем уже править...
Но тогда придется разбирать HTML... Может есть более красивый способ?

Можно, правда, получить коллекцию All, но тогда придется и процедуру сохранения вручную реализовать, а потом еще картинки подгружать.

Может есть у кого идеи?
Re: Сохранение в IE с изменением Source
От: Иль  
Дата: 14.11.03 06:52
Оценка:
HB>Как реализовать сохранение, чтобы можно было вносить изменения?

Думаю достаточно просто и реально воспользоваться DOM-интерфейсом MSXML. То есть сделать копию DHTML-дерева (начиная с корневого элемента), изменить его как угодно и после этого сохранить.
Re[2]: Сохранение в IE с изменением Source
От: HateBreeder  
Дата: 14.11.03 12:04
Оценка:
Здравствуйте, Иль, Вы писали:

HB>>Как реализовать сохранение, чтобы можно было вносить изменения?


Иль>Думаю достаточно просто и реально воспользоваться DOM-интерфейсом MSXML. То есть сделать копию DHTML-дерева (начиная с корневого элемента), изменить его как угодно и после этого сохранить.


А как же картинки? Стили CSS?
Их сохранять вручную?
Re[3]: Сохранение в IE с изменением Source
От: Иль  
Дата: 21.11.03 12:01
Оценка:
Здравствуйте, HateBreeder, Вы писали:

HB>А как же картинки? Стили CSS?

HB>Их сохранять вручную?

если уже не поздно...

Есть же вариант сначала сохранить страницу стандартной процедурой сохранения (ИЕ кстати берет в этом случае картинки и CSSы из кеша [если установлен Work offline] или иногда пытается взять их поновее прямо из источника, чем лично меня раздражает ), а потом переписать HTMLку поверх записанной IE.
Re: Сохранение в IE с изменением Source
От: gwg-605 Россия  
Дата: 22.11.03 11:02
Оценка:
Здравствуйте, HateBreeder, Вы писали:

HB>Пишу плагин для IE.

HB>Необходимо при сохранении страницы добавлять туда кое-какую инфу.
HB>Я действовать по такому алгоритму:
HB>1. Изменить саму страницу через IHTMLDocument2
HB>2. Вызвать стандартную процедуру сохранения
HB>3. Вернуть страницу в исходный вид
HB>Но это не работает. Сохраняется именно исходная версия страницы. Изменения пропадают.

HB>Как реализовать сохранение, чтобы можно было вносить изменения?


Увы нельзя использовать стандартный метод IE Save, он берет все файлы из кеша. Т.е. сохраняет оригинальные документы. Если нужно сохранить с изменениями, мы делали примерно так:
1. Вносили изменения
2. пробегали по списку картинок, линков, скриптов, фреймов и сохраняли их в нужном месте + исправляли соответствующие линки. Для фрейсов вызывали туже самую процедуру как и для сохраненния основного HTML-я.
3. брали outerHTML от BODY
4. собирали HTML заголовок (мы не нашли метода получить полный HTML) HEAD, META, TITLe, LINK,...
5. и сохраняли в файле HTML заголовок + outerHTML от BODY

В общем вот и все. Всю статику брали из кеша.

Удачи,
Валерий.

ЗЫ. Скорее всего есть более простой метод сделать это, но... мы на тот момент не нашли этого...
Re[4]: Сохранение в IE с изменением Source
От: HateBreeder  
Дата: 22.11.03 20:40
Оценка:
Здравствуйте, Иль, Вы писали:

Иль>если уже не поздно...


Иль>Есть же вариант сначала сохранить страницу стандартной процедурой сохранения (ИЕ кстати берет в этом случае картинки и CSSы из кеша [если установлен Work offline] или иногда пытается взять их поновее прямо из источника, чем лично меня раздражает ), а потом переписать HTMLку поверх записанной IE.


Большое спасибо!
Такая идея мне приходила в голову. Но и тут есть загвоздка:
я вызываю стандартную функцию сохранения:
IWebBrowser2::ExecWB(OLECMDID_SAVEAS...)
Она выдает диалог, а потом сохраняет файл. Все отлично...
Но как потом узнать путь к этому сохраненному файлу? Чтобы его поправить?
Re[2]: Сохранение в IE с изменением Source
От: HateBreeder  
Дата: 22.11.03 20:44
Оценка:
Здравствуйте, gwg-605, Вы писали:

G6>Увы нельзя использовать стандартный метод IE Save, он берет все файлы из кеша. Т.е. сохраняет оригинальные документы. Если нужно сохранить с изменениями, мы делали примерно так:

G6>1. Вносили изменения
G6>2. пробегали по списку картинок, линков, скриптов, фреймов и сохраняли их в нужном месте + исправляли соответствующие линки. Для фрейсов вызывали туже самую процедуру как и для сохраненния основного HTML-я.
G6>3. брали outerHTML от BODY
G6>4. собирали HTML заголовок (мы не нашли метода получить полный HTML) HEAD, META, TITLe, LINK,...
G6>5. и сохраняли в файле HTML заголовок + outerHTML от BODY
G6>В общем вот и все. Всю статику брали из кеша.
G6>Удачи,
G6> Валерий.
G6>ЗЫ. Скорее всего есть более простой метод сделать это, но... мы на тот момент не нашли этого...

Не могли бы вы скинуть код прохода по картинкам, линкам, фреймам и т.д.
Очень не хочется все это заново мутить...
Если не затруднит, скиньте пожалуйста на igor@progz.ru
Кстати, по поводу 4. Полный HTML я получал так: брал коллекцию all, ее нулевой элемент — это и есть весь HTML-файл.
Заранее спасибо!
Re[3]: Сохранение в IE с изменением Source
От: gwg-605 Россия  
Дата: 22.11.03 21:03
Оценка:
HB>Если не затруднит, скиньте пожалуйста на igor@progz.ru
Скинул.
HB>Кстати, по поводу 4. Полный HTML я получал так: брал коллекцию all, ее нулевой элемент — это и есть весь HTML-файл.
Спасибо.
Re[4]: Сохранение в IE с изменением Source
От: HateBreeder  
Дата: 23.11.03 15:55
Оценка:
Здравствуйте, gwg-605, Вы писали:

HB>>Если не затруднит, скиньте пожалуйста на igor@progz.ru

G6>Скинул.

Огромное спасибо! Просто выручил!

HB>>Кстати, по поводу 4. Полный HTML я получал так: брал коллекцию all, ее нулевой элемент — это и есть весь HTML-файл.

G6>Спасибо.

Я тут выяснил, что был не совсем прав.
Теперь делаю так: из коллекции all выбираю tags("html").
А потом беру первый элемент.
Re[5]: Сохранение в IE с изменением Source
От: gwg-605 Россия  
Дата: 23.11.03 16:40
Оценка:
HB>Я тут выяснил, что был не совсем прав.
HB>Теперь делаю так: из коллекции all выбираю tags("html").
HB>А потом беру первый элемент.
Я попробовал брать document.all(0).outerHTML — получаю весь HTML, это под IE6.
А по поводу html тэга, то в IE4 его в коллекции точно не было, а у нас была задача сделать совместимым с IE4 и выше.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.