赞
踩
下面的代码只有写在,iOS中WKWebView加载的H5界面中才有效,单独写在h5界面中会报下面的错误:
TypeError: undefined is not an object(evaluating ‘window.webkit.messageHandlers’)
window.webkit.messageHandlers.jsToIOS.postMessage("这是js传递到ios的数据");
// jsToIOS 是JavaScript向IOS发送数据时,使用的函数名
self.wkWebView?.configuration.userContentController.add(self, name: "jsToIOS")
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
print("JS发送到IOS的数据====\(message.body), name=\(message.name)")
}
// 重点:IOS 调用 JavaScript 的 navButtonAction 方法,并传递参数
// 使用匿名回调函数接收方法返回值
self.wkWebView!.evaluateJavaScript("navButtonAction('test1',18)") {
(response, error) in
print("message: \(response!)")
}
// ios 向网页注入 js,注入js分为在网页加载完毕注入(.atDocumentStart)和加载之前注入(.atDocumentEnd)
let js = "document.getElementsByTagName('h2')[0].innerText='我是ios原生为h5注入的方法'"
let script = WKUserScript.init(source: js, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
wkWebView!.configuration.userContentController.addUserScript(script)
IOS-SwiftUI-IOS原生与JavaScript交互的应用 - 知乎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。