iphone uiwebview скачать полную страницу с CSS и изображениями - PullRequest
6 голосов
/ 12 ноября 2009

В моем приложении есть uiwebview, который загружает URL. Я использую следующую строку для сохранения HTML страницы, загруженной локально, чтобы иметь возможность просматривать ее в автономном режиме.

NSString* html=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"]

Проблема заключается только в HTML-документе, который сохраняется, я хочу сохранить также изображения и CSS вместе с HTML-кодом, чтобы пользователь мог видеть страницу так, как если бы он был в сети.

просто как "сохранить веб-страницу завершена" или что-то подобное, что мы использовали в браузерах.

ценю вашу помощь.

Ответы [ 2 ]

4 голосов
/ 12 ноября 2009

Легкого пути нет. Пересмотрите HTML, используя RegexKitLite (http://regexkit.sourceforge.net/RegexKitLite/index.html)), и перенесите все URL в .jpg, .gif, .png, .css и .js и все остальное, что вам нужно.

поочередно, звоните:

NSString* imgUrls=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('img')"]

или что-то в этом роде, я не завистник javascript ... а потом разбираюсь со всем, что возвращается;)

Извините. Это боль в задней части тела.

редактирование:

Сохраните все изображения на iphone, а также сохраните HTML-файл. Если вы хотите перезагрузить страницу, загрузите html из файла в строку, а затем используйте

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL

для загрузки строки HTML. baseURL используется для указания каталога или сайта, который веб-представление представит в виде HTML-строки, которую вы передаете. Все URL будут относительными к этому.

Обратите внимание, конечно, что это не будет работать очень хорошо для абсолютных URL, только для относительных. Итак, это, в вашем html-файле, запутает вещи:

<img src="http://google.com/f/r/i/g/img.gif">

пока все будет в порядке:

<img src="f/r/i/g/img.gif">

Опять же, все это решение грязно. Вы можете посмотреть на существующий рекурсивный html-паук с открытым исходным кодом. Я думаю, что wget делает то, что вы хотите, но я сомневаюсь, что его можно скомпилировать для iPhone без особых хлопот.

0 голосов
/ 04 октября 2011

У меня не было времени проверить, но ASIWebPageRequest выглядит очень многообещающе. В нем говорится, что он может «хранить полную веб-страницу в одной строке или с каждым внешним ресурсом в отдельном файле, на который ссылается страница»

ASIWebPageRequest 1

Я буду использовать его в одном из своих проектов, а затем обновлю тему.

Gonso

...