当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《嵌入在WKWebView加载的HTML文件中的JavaScripts是否可以访问?》经验,为你挑选了1个好方法。

foo.html我的iOS 10应用程序中有一个基本的.标记是直截了当的:



    
        
        
        Example
        

我用以下内容加载它:

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变量.在通过WKNavigationDelegate的方法确认加载DOM之后:func webView(_ webView: WKWebView, didFinish navigation: 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}

我正在尝试做什么?我是否必须以不同的方式解决问题?难道evaluateJavaScript它的加载因为后,现在可以访问我的DOM的范围,似乎没有.



1> randombits..:

我想通了 - 会在这里给出答案,希望它可以帮助别人:

问题出在这里:

webView.loadHTMLString(html!, baseURL: nil)

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

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


和平休息500代表:(
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有