Как загрузить локальные html файлы с изображениями, js и css в WebView Cocoa/Mac OS
У меня есть код для этой работы в iOS. Используя то, что я нашел здесь и вокруг Интернета, мне удалось найти где-нибудь версию Cocoa Mac Os, но изображения не загружаются. CSS и Javascript, похоже, не загружаются. Каталог для HTML добавляется в группу "Ресурсы", но добавляется в виде ссылок на папки (синяя папка), что делает Xcode уважением к структуре каталогов HTML-приложения.
Вот код, который я пытаюсь использовать:
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index"
ofType:@"html"
inDirectory:@"/Patient_eMMR_HTML5" ];
NSString *html = [NSString stringWithContentsOfFile:htmlPath
encoding:NSUTF8StringEncoding
error:nil];
[[webView mainFrame] loadHTMLString:html baseURL:[NSURL fileURLWithPath:
[NSString stringWithFormat:@"%@/Patient_eMMR_HTML5/",
[[NSBundle mainBundle] bundlePath]]]];
Это версия iOS для кода, из которого я основал код, который я использовал выше:
NSString *htmlPath = [[NSBundle mainBundle] pathForResource:@"index"
ofType:@"html"
inDirectory:@"/Patient_eMMR_HTML5" ];
NSString *html = [NSString stringWithContentsOfFile:htmlPath
encoding:NSUTF8StringEncoding
error:nil];
[webView loadHTMLString:html
baseURL:[NSURL fileURLWithPath:
[NSString stringWithFormat:@"%@/Patient_eMMR_HTML5/",
[[NSBundle mainBundle] bundlePath]]]];
Любая помощь приветствуется. Спасибо.
Ответы
Ответ 1
Не нужно гадать с базовыми URL-адресами, если вы загружаете HTML через NSURLRequest
, а не как строку:
NSString* filePath = [[NSBundle mainBundle] pathForResource:@"index"
ofType:@"html"
inDirectory:@"Patient_eMMR_HTML5"];
NSURL* fileURL = [NSURL fileURLWithPath:filePath];
NSURLRequest* request = [NSURLRequest requestWithURL:fileURL];
[[webView mainFrame] loadRequest:request];
Обратите внимание, что вы должны указывать имя каталога только в методе ‑pathForResource:…
, не префикс его с помощью косой черты. Предполагается, что именованный каталог коренится в каталоге основного пакета.
Обратите внимание, что UIWebView
также имеет метод ‑loadRequest:
, поэтому вы можете использовать почти тот же код в iOS.
Ответ 2
Это сработало для меня с resourceURL на Mac OSX
[webView loadHTMLString:htmlContent baseURL:[[NSBundle mainBundle] resourceURL]]
Ответ 3
mserin, этот вопрос был направлен на Cocoa Framework для Mac Os X. Вы используете UIWebView, который является частью UIKit для Cocoa Touch. Если вы пытаетесь построить это для iPhone/iPad, вы должны посмотреть это сообщение.
Если вы пытаетесь сделать это, используйте Mac, используя код, который мы здесь используем, но вам нужно включить инфраструктуру WebKit следующим образом:
#import <WebKit/WebKit.h>
И затем подкласс WebView, а не UIWebView:
WebView *webView;
С таким свойством:
@property (nonatomic, retain) IBOutlet WebView *webView;