iOS - UIWebView 加载 HTML 字符串包含 iframe 不起作用

Posted

技术标签:

【中文标题】iOS - UIWebView 加载 HTML 字符串包含 iframe 不起作用【英文标题】:iOS - UIWebView loading HTML string contains iframe not working 【发布时间】:2017-03-27 15:50:12 【问题描述】:

我正在尝试将包含 iframe 的 html 字符串加载到 UIWebview,该视图占用了内容的空间,但它加载了完全空白的视图,这里是 HTML

<html>
	<head>
		<meta http-equiv='Content-Type' content='charset=utf-8'/>
		<style>
			iframemax-width:100% !important 
		</style>
	</head>
	    <body>
	        <p dir="RTL"> <iframe allowfullscreen="" frameborder="0"  id="molvideoplayer" scrolling="no" src="http://www.dailymail.co.uk/embed/video/1411595.html" title="MailOnline Embed Player" ></iframe> </p> 
    </body> 
    </html>

我的代码也是

self.newsBodyWebView.loadHTMLString(htmlString, baseURL: nil)

我也尝试了 UIWebView 委托功能

func webView(_ webView: UIWebView, didFailLoadWithError error: Error) 
    print(error.localizedDescription)

我收到了这个错误

操作无法完成。 (NSURLErrorDomain 错误 -999。)

我搜索了错误但没有任何帮助。

当我删除 iframe 并编写任何其他 html 时,UIWebView 运行良好。

我不知道我的代码有什么问题

编辑

当我按下任何按钮在容器视图中进行更改时,webview 再次出现,我很困惑为什么会发生这种情况!

【问题讨论】:

【参考方案1】:

终于弄明白了,webview的高度是在webview这样启动后设置的

func webViewDidFinishLoad(_ webView: UIWebView) 
     webView.frame.size.height = 1
     self.webViewHeight = webView.sizeThatFits(CGSize.zero)

我把它改成了

func webViewDidFinishLoad(_ webView: UIWebView) 
     webView.frame.size.height = 1
     let height = webView.scrollView.contentSize.height
     var wvRect = webView.frame
     wvRect.size.height = height
     webView.frame = wvRect

现在一切正常。

【讨论】:

以上是关于iOS - UIWebView 加载 HTML 字符串包含 iframe 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

iOS - UIWebView 加载 HTML 字符串包含 iframe 不起作用

ios之UIWebView常用方法

iOS UIWebView 加载进度条的使用

IOS UIWebView(浏览器控件)

iOS,html使用交互相关

iOS uiwebview 在加载整个 html 文件之前触发了 finishLoad 事件