1

我目前正在创建一个 UIWebView ,在其中加载从服务器服务获取的 NSString 。它只是一个简单的 HTML 字符串,然后我将它加载到 UIWebView 中,如下所示:

urlAddress = [[NSURL alloc] initWithString:URLString];

//try removing cache so new stylesheet shows everytime- not sure if this is working yet
[[NSURLCache sharedURLCache] removeAllCachedResponses];


[InfoWebview loadHTMLString:returnedHtmlString baseURL:urlAddress];

然后由于某种原因图像没有显示并且样式表不起作用。

例如我的 baseURL 看起来像这样

https://myserveraddress/

然后CSS的代码看起来像这样

<link rel="stylesheet" type="text/css" href="Data/iPhone/my.css">

我的问题是 baseURL 如何在该 href 上添加前缀?它要求css作为loadHTMLString加载到WebView上吗?或不同的东西

以及如何将 infoWebView 源输出到 NSString?看看 baseURL 是否在这些 href 链接上添加了前缀?还是现在就这样工作?

任何帮助将不胜感激。

4

1 回答 1

5

如何baseURL工作?

以下是 AFNetworking 文档中的一些有用示例:

NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];
[NSURL URLWithString:@"foo" relativeToURL:baseURL];                  // http://example.com/v1/foo
[NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL];          // http://example.com/v1/foo?bar=baz
[NSURL URLWithString:@"/foo" relativeToURL:baseURL];                 // http://example.com/foo
[NSURL URLWithString:@"foo/" relativeToURL:baseURL];                 // http://example.com/v1/foo
[NSURL URLWithString:@"/foo/" relativeToURL:baseURL];                // http://example.com/foo/
[NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/

基本上,您的 HTML 中的任何文件都将假定位于基本 URL 中指定的位置。如果 HTML 指定以 开头的文件/,则域名将保持不变,但基本 URL 的路径将被忽略。如果 HTML 指定以 开头的文件http(s)://,则将忽略整个基本 URL。

在您的示例中,该 URL 将解析为https://myserveraddress/Data/iPhone/my.css.

如何将infoWebView源输出到 NSString?

一个简单的解决方案是:

NSString *html = [InfoWebview stringByEvaluatingJavaScriptFromString: 
                                         @"document.body.innerHTML"];

有关此主题的更多信息和讨论可在此处的 Stack Overflow 上找到

于 2013-09-04T02:26:43.207 回答