我正在使用UIWebView
构建loadHTMLString:baseURL:
。此webview的内容有些随意,可能包括iframe等网络资源,例如youtube视频嵌入。 Youtube iframe通常使用无方案的URls,这是一个问题。看起来好像因为Web视图没有使用请求进行初始化,而是静态HTML,因此Webkit没有对需要为iframe这样的事情进行的这些添加请求进行任何方案确定。因此,具有无方案src
属性的iframe将作为本地文件加载,因此失败。
有没有更好的方法来处理这个问题,而不仅仅是通过javascript搜索看似无方向的网址并替换它们?
答案 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://"]
就可以了。