>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как применить nsIWebBrowserPersist.saveDocument для URL http://forum.mozilla-russia.org/viewtopic.php?id=43522 |
KML > 02-03-2010 15:54:13 |
Нужно соорудить аналог 'Save Page As'-->'Web Page, Complete' для некоторого URL, т.е. какая-то страница должна быть сохранена полностью с картинками и прочей требухой. Метод saveDocument чудесно справляется с такой задачей, если страница открыта в браузере, но мне нужно это сделать для url который не загружен в FF. Вобщем нужно как-то получить nsIDOMDocument по URL, при этом юзер не должен видеть каких-либо следов от этих манипуляций. Может как-то можно открыть вкладку или окно FF в скрытом режиме и загрузить страницу туда? З.Ы. Решение в лоб понятно - стянуть саму страничку, прошерстить на наличие картинок, скриптов, и т.п. и сохранить всё это добро вручную. |
KML > 03-03-2010 01:30:24 |
Нашел кое что по теме... |
KML > 03-03-2010 17:18:15 |
Обнаружил неприятную особенность, saveURI открывает стандартный download manager высотой где-то 10 пикселов: Выделить код Код: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); Как бы это зафиксить? |