Полезная информация

В мире Mozilla происходит много интересных событий. Но вам не нужно постоянно посещать новостные сайты, чтобы быть в курсе всех изменений. Зайдите на ленту новостей Mozilla Россия.

№102-03-2010 15:54:13

KML
Участник
 
Группа: Extensions
Откуда: Днепропетровск
Зарегистрирован: 01-06-2005
Сообщений: 422
UA: Firefox 3.5

Как применить nsIWebBrowserPersist.saveDocument для URL

Нужно соорудить аналог 'Save Page As'-->'Web Page, Complete' для некоторого URL, т.е. какая-то страница должна быть сохранена полностью с картинками и прочей требухой. Метод saveDocument чудесно справляется с такой задачей, если страница открыта в браузере, но мне нужно это сделать для url который не загружен в FF.

Вобщем нужно как-то получить nsIDOMDocument по URL, при этом юзер не должен видеть каких-либо следов от этих манипуляций. Может как-то можно открыть вкладку или окно FF в скрытом режиме и загрузить страницу туда?

З.Ы. Решение в лоб понятно - стянуть саму страничку, прошерстить на наличие картинок, скриптов, и т.п. и сохранить всё это добро вручную.


:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0

Отсутствует

 

№203-03-2010 01:30:24

KML
Участник
 
Группа: Extensions
Откуда: Днепропетровск
Зарегистрирован: 01-06-2005
Сообщений: 422
UA: Firefox 3.6

Re: Как применить nsIWebBrowserPersist.saveDocument для URL

Нашел кое что по теме...


:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0

Отсутствует

 

№303-03-2010 17:18:15

KML
Участник
 
Группа: Extensions
Откуда: Днепропетровск
Зарегистрирован: 01-06-2005
Сообщений: 422
UA: Firefox 3.5

Re: Как применить nsIWebBrowserPersist.saveDocument для URL

Обнаружил неприятную особенность, saveURI открывает стандартный download manager высотой где-то 10 пикселов:
dmanager.png

Выделить код

Код:

var persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist);
persist.persistFlags = Components.interfaces.nsIWebProgressListener.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
                                   Components.interfaces.nsIWebProgressListener.PERSIST_FLAGS_BYPASS_CACHE;

var io_service = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var source_uri = io_service.newURI(url, null, null);
var target_uri = io_service.newFileURI(file);

var transfer = Components.classes["@mozilla.org/transfer;1"].createInstance(Components.interfaces.nsITransfer);
transfer.init(source_uri, target_uri, "", null, null, null, persist);

persist.progressListener = transfer;
persist.saveURI(source_uri, null, null, null, "", file);

Как бы это зафиксить?


:::: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]