嵌入在WKWebView加载的HTML文件中的JavaScript是否可以访问?

前端之家收集整理的这篇文章主要介绍了嵌入在WKWebView加载的HTML文件中的JavaScript是否可以访问?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的iOS 10应用程序中有一个基本的foo.html.标记是直接的:
<!doctype html>
<html>
    <head>
        <Meta charset="utf-8">
        <Meta http-equiv="x-ua-compatible" content="ie=edge">
        <title>Example</title>
        <Meta name="viewport" content="width=device-width,initial-scale=1">
    </head>
    <body>
        <p>Hello,World!</p>

        <div id="container"></div>
    </body>
    <script type="text/javascript" src="bar.js"></script>
    <script type="text/javascript">
        // Bar is defined in bar.js
        var bar = new Bar();
    </script>
</html>

我加载它与以下:

let htmlFile = Bundle.main.path(forResource: "foo",ofType: "html")
let html = try? String(contentsOfFile: htmlFile!,encoding: String.Encoding.utf8)
webView.loadHTMLString(html!,baseURL: nil)

在我的iOS应用程序中,我正在尝试访问bar变量. DOM加载后,由WKNavigationDelegate的方法确认:func webView(_ webView:WKWebView,didFinish导航:WKNavigation!)

我有这样的代码

var htmlContent : String {
   var s = "console.log(bar)"

   return s
}

webView.evaluateJavaScript(htmlContent,completionHandler: { result,error in
  if let error = error {
    print("error: \(error)")
  }

  if let result = result {
    print("result: \(result)")
  }
})

我最终得到一个错误

error: Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo={WKJavaScriptExceptionLineNumber=1,WKJavaScriptExceptionMessage=ReferenceError: Can't find variable: Bar,WKJavaScriptExceptionSourceURL=about:blank,NSLocalizedDescription=A JavaScript exception occurred,WKJavaScriptExceptionColumnNumber=47}

我正在努力做什么?我必须以不同的方式解决问题吗?评估JavaScript在加载DOM后可以访问我的DOM的范围,因为现在看来它似乎没有.

解决方法

我想出来 – 会把答案放在这里,希望能帮助别人:

问题在这里:

webView.loadHTMLString(html !,baseURL:nil)

我不得不确保baseURL不是零,以下修复它:

webView.loadHTMLString(html !,baseURL:Bundle.main.bundleURL)

猜你在找的HTML相关文章