iOS原生(swift)和web(js javascript)相互调用 WKWebView

iOS原生(swift)和web(js javascript)相互调用 WKWebView,第1张

几乎是默写出来,加上自己理解的博客(iOS面试)

文章目录 1. js调用iOSjs调用:iOS接收: 2.iOS调用jsiOS调用jsiOS向网页注入JS 3.参考博客:

1. js调用iOS js调用:
window.webkit.messageHandlers.jsToIOS.postMessage("这是js传递到ios的数据");
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)")
}
2.iOS调用js iOS调用js
// 重点:IOS 调用 JavaScript 的 navButtonAction 方法,并传递参数
     // 使用匿名回调函数接收方法返回值
     self.wkWebView!.evaluateJavaScript("navButtonAction('test1',18)") {
         (response, error) in
         print("message: \(response!)")
     }
iOS向网页注入JS
 // 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)
3.参考博客:

IOS-SwiftUI-IOS原生与JavaScript交互的应用 - 知乎

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/993464.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存