在执行以下这段代码后报上面的错误**(jsCode 是js代码)**
webView.evaluateJavaScript(jsCode) { (result, error) in
if let error = error {
print("JavaScript执行错误: \(error)")
}
}
造成这个错误的原因:
-
1:你的js代码书写错误,我的js代码中含有空格和换行符导致这个错误的产生.
-
2:当你执行- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandler:(void (^ _Nullable)(_Nullable id, NSError * _Nullable error))completionHandler这个方法的时候一定要确认整个webView已经加载完成,所以这个方法应该写在webView的这个代理方法里面- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation;
解决方案**:**
针对第一个问题,需要去掉首位的空白字符和换行字符等:
// 正确将字典转换为JSON字符串
if let jsonData = try? JSONSerialization.data(withJSONObject: paramsMDict, options: .prettyPrinted),
let jsonString = String(data: jsonData, encoding: .utf8) {
// 注意这里需要对双引号进行转义 + 去掉首尾空白字符和换行字符
let escapedJsonString = jsonString.replacingOccurrences(of: "\"", with: "\\\"").replacingOccurrences(of: "\n", with: "").replacingOccurrences(of: "\r", with: "").replacingOccurrences(of: " ", with: "").trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
let jsCode = "JSBridge.receiveMessageFromNative(\"\(escapedJsonString)\");"
webView.evaluateJavaScript(jsCode) { (result, error) in
if let error = error {
print("JavaScript执行错误: \(error)")
}
}
}