我正在创建一个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上?如果loadHTMLString加载到WebView上,它会请求css吗?或者不同的东西
如何将infoWebView源输出到NSString?看看baseURL是否在这些href链接上加上前缀?或现在它的剂量是这样的吗?
非常感谢任何帮助。
答案 0 :(得分: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。
在您的示例中,网址将解析为https://myserveraddress/Data/iPhone/my.css
。
如何将
infoWebView
源输出到NSString?
一个简单的解决方案是:
NSString *html = [InfoWebview stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
有关此主题的更多信息和讨论,请on Stack Overflow here。