baseURL不适用于UIWebView?

Hur*_*rkS 1 objective-c uiwebview nsstring base-url ios

我目前正在创建一个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];
Run Code Online (Sandbox Code Playgroud)

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

例如,我的baseURL看起来像这样

https://myserveraddress/
Run Code Online (Sandbox Code Playgroud)

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

<link rel="stylesheet" type="text/css" href="Data/iPhone/my.css">
Run Code Online (Sandbox Code Playgroud)

我的问题是这个如何将baseURL前缀加到那个href上?如果loadHTMLString加载到WebView上,它会请求css吗?或者不同的东西

如何将infoWebView源输出到NSString?看看baseURL是否在这些href链接上加上前缀?或者它现在的剂量是这样吗?

任何帮助将不胜感激.

Aar*_*ger 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/
Run Code Online (Sandbox Code Playgroud)

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

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

如何将infoWebView源输出到NSString?

一个简单的解决方案是

NSString *html = [InfoWebview stringByEvaluatingJavaScriptFromString: 
                                         @"document.body.innerHTML"];
Run Code Online (Sandbox Code Playgroud)

有关此主题的更多信息和讨论,请参见Stack Overflow.

  • 请注意,`loadHTMLString:baseURL:`方法不会修改HTML以包含基本URL; 它会在您的HTML请求资源时使用它. (2认同)