WKWebView无法在网页上加载iframe中的内容

时间:2016-12-20 19:47:58

标签: ios

我有一个WKWebView,用户可以通过多个页面访问包含来自lesson.ly的视频的页面。

问题是视频在网页视图中根本不会显示,视频所在的页面只有一个空白。但是,如果我在iOS上打开chrome,它加载就好了。

我通过调试HTML代码来查明问题。以下是webview上HTML的屏幕截图: enter image description here

以下是适用于Mac的Chrome上的HTML图片: enter image description here

如果您注意到,webview中的iframe中没有任何内容。我不知道为什么它没有加载数据。我启用了“允许任意负载”#39;对于App Transport Security无济于事。

感谢任何帮助,谢谢。

2 个答案:

答案 0 :(得分:3)

找出问题所在。这一切都在委托方法webView:decidePolicyForNavigationAction:decisionHandler:中,因为Lessonly视频来自不同的来源(fast.wistia.net),我不得不添加url expliclity。

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {

    guard let requestURL = navigationAction.request.url?.absoluteString else { return }

    if requestURL.tc_contains("mydomain.lesson.ly") || requestURL.tc_contains("fast.wistia.net"){
        decisionHandler(.allow)
    }
    else {
        decisionHandler(.cancel)
    }
}

答案 1 :(得分:2)

或者,您可以检查相关请求是否定位到主框架,而不是允许使用特定网址:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {
    // Allow navigation for requests loading external web content resources.
    guard navigationAction.targetFrame?.isMainFrame != false else {
        decisionHandler(.allow)
        return
    }

    ...
}