嵌入在WKWebView加载的HTML文件中的JavaScripts是否可以访问?
作者:拾味湖 | 2023-09-06 18:31
如何解决《嵌入在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代表:(