gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 05:36:11 25 4
gpt4 key购买 nike

我的 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 变量。通过 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 的范围,因为截至目前,似乎还没有。

最佳答案

我想通了 - 会把答案放在这里希望它能帮助别人:

问题出在这里:

webView.loadHTMLString(html!, baseURL: nil)

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

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

关于javascript - WKWebView 加载的 HTML 文件中嵌入的 JavaScript 是否可以访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com