解决使用loadHTMLString构造的UIWebView中的无方案URL:

时间:2013-10-21 16:01:29

标签: ios url uiwebview

我正在使用UIWebView构建loadHTMLString:baseURL:。此webview的内容有些随意,可能包括iframe等网络资源,例如youtube视频嵌入。 Youtube iframe通常使用无方案的URls,这是一个问题。看起来好像因为Web视图没有使用请求进行初始化,而是静态HTML,因此Webkit没有对需要为iframe这样的事情进行的这些添加请求进行任何方案确定。因此,具有无方案src属性的iframe将作为本地文件加载,因此失败。

有没有更好的方法来处理这个问题,而不仅仅是通过javascript搜索看似无方向的网址并替换它们?

1 个答案:

答案 0 :(得分:0)

如果您将nil作为baseURL传递,则默认方案将变为about,无法加载无方案资源。将HTTP URL(甚至是无效的URL)传递给loadWithHTMLString:baseURL:的关键。例如:

NSString *html = @"<html><img src=\"//example.com/some_image.jpg\"></html>";
[self.webView loadHTMLString:html baseURL:[NSURL URLWithString:@"http://localhost"]];

在我的测试中,我发现简单地传递[NSURL URLWithString:@"http://"]就可以了。