Javascript 嵌入在WKWebView加载的HTML文件中的Java脚本是否可以访问?
我在iOS10应用程序中有一个基本的Javascript 嵌入在WKWebView加载的HTML文件中的Java脚本是否可以访问?,javascript,ios,swift,Javascript,Ios,Swift,我在iOS10应用程序中有一个基本的foo.html。标记是直截了当的: <!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <title>Example</title> <m
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>
在我的iOS应用程序中,我试图访问条
变量。按照WKNavigationDelegate的方法确认加载DOM后:func-webView(\uwebview: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
不是nil,以下修复了它:
webView.loadHTMLString(html!,baseURL:Bundle.main.bundleURL)
当您遇到错误时,是否显示完全相同的代码WKJavaScriptExceptionColumnNumber=47
表示传递给webView.evaluateJavaScript
的JavaScript代码至少有48个字符,但您的htmlContent
只有16个字符。如果没有显示正确的信息,没有人可以帮助你。这不是确切的代码,但确切的代码目前对上下文没有任何帮助。它正是这个示例所做的,它试图创建一个对象,该对象的名称空间/代码在bar.js
中可用,除非它似乎无法访问bar.js
的内容和/或它超出了范围。精确的代码将有助于消除许多轻微错误的可能性。不管怎样,赏金会帮你的。祝你好运,你能告诉我你是如何设计你的WKWebView的吗?您添加到WKWebView的属性是什么?Rest In Peace 500 rep:(@FrankerZ和randombits,表单加载是否正确?
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}