【问题标题】:iframe content from external source not loading in local HTML file on iOS来自外部源的 iframe 内容未加载到 iOS 上的本地 HTML 文件中
【发布时间】:2019-08-30 23:09:18
【问题描述】:

我在我用 swift 编写的 iOS 应用程序中创建了一个本地 HTML 文件。将 HTML 文件加载到 WKWebView 中,如下所示:

let url = Bundle(identifier: myIdentifier).url(forResource: "localHtmlFile", withExtension: "html")
let htmlFormatString = try String(contentsOf: url)
loadHTMLString(string: htmlFormatString, baseURL: nil)

HTML 页面包含我希望加载外部页面的 iframe:

<div>Test</div>
<iframe src="https://www.somepage.com"></iframe>

本地 HTML 文件加载成功,在 div 中可以看到 Test 文本。 iframe 也已创建,但为空。如果我使用 Safari 开发人员工具进行调试,则只有一个空的 html 页面,但没有加载任何内容。此外,根本不执行对 url 的网络请求。

但是如果我插入一个带有&lt;script src="https://url-to-some-js"&gt;的外部JavaScript文件,就会成功加载JS代码,所以不存在网络问题。另外,如果我直接使用webView.load(URLRequest(url: url)) 加载网址,它工作正常。仅在 iframe 内,它不起作用。

如何将 iframe 制作为在 iOS WKWebView 中工作的外部资源?这完全被 iOS 阻止还是我必须配置其他东西?

【问题讨论】:

  • 你找到解决办法了吗?
  • 你找到解决办法了吗?

标签: ios swift xcode iframe wkwebview


【解决方案1】:

根据一些谷歌搜索,您似乎需要使用 webView 的委托方法来允许外部站点。具体来说,使用以下推荐的实现来实现webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -&gt; Void)

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

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

    if requestURL.contains("somepage.com") {
        decisionHandler(.allow)
    }
    else {
        // You don't need to cancel here, but you can implement your own logic here
        decisionHandler(.cancel)
    }
}

【讨论】:

    【解决方案2】:

    在桌面浏览器上执行此操作,您有一个本地 HTML 文件和一个远程 iFrame 会导致一些安全问题,所以我希望您在这里遇到同样的问题。

    您可以将本地内容移动到远程服务器吗?它不必与您的 iframe 内容相同,尽管这会让您的生活更轻松。

    如果您有大量本地数据,那么您可以为包含本地数据的 JSON 对象的父页面发送 POST 请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2016-03-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2017-07-12
      相关资源
      最近更新 更多