Swift WKWebView的js调用swift

前端之家收集整理的这篇文章主要介绍了Swift WKWebView的js调用swift前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近项目需求,需要用到JavaScriptCore和@H_404_2@WebKit,但是网上的资源有限,而且比较杂,都是一个博客复制另外一个博客,都没有去实际敲代码验证,下面给大家分享一下我的学习过程。@H_404_2@

js调用swift@H_404_2@@H_404_2@

controller的代码:@H_404_2@@H_404_2@

@H_404_2@@H_404_2@

  1. import UIKit
  2. import WebKit
  3.  
  4. class JSCallSwiftController: UIViewController {
  5. var webView = WKWebView()
  6. override func viewDidLoad() {
  7. super.viewDidLoad()
  8. setWebView()
  9. }
  10. func setWebView() {
  11. webView.frame = view.frame
  12. let config = WKWebViewConfiguration()
  13. //偏好设置
  14. config.preferences = WKPreferences()
  15. //字体
  16. config.preferences.minimumFontSize = 10
  17. //设置js跳转
  18. config.preferences.javaScriptEnabled = true
  19. //不自动打开窗口
  20. config.preferences.javaScriptCanOpenWindowsAutomatically = false
  21. //web内容处理池
  22. config.processPool = WKProcessPool()
  23. //js和webview内容交互
  24. config.userContentController = WKUserContentController()
  25. //注入js对象名称为appmodel,当js通过appmodel来调用
  26. //可以在wkscriptMessagehandler的代理中接收到
  27. config.userContentController.add(self,name: "AppModel")
  28. //webView
  29. webView = WKWebView(frame: view.bounds,configuration: config)
  30. view.addSubview(webView)
  31. let url = Bundle.main.url(forResource: "JSCallOC",withExtension: "html")
  32. webView.load(URLRequest(url:url!))
  33. }
  34. }
  35.  
  36. extension JSCallSwiftController: WKNavigationDelegate {
  37. }
  38.  
  39. extension JSCallSwiftController: WKScriptMessageHandler {
  40. func userContentController(_ userContentController: WKUserContentController,didReceive message: WKScriptMessage) {
  41. print(message.body)
  42. }
  43. }

html里面要写入的代码

  1. function log(n) {
  2. window.webkit.messageHandlers.AppModel.postMessage({body:n})
  3. }
这样就很简单的实现了js调用swift的方法

如果转载请注明转于:@H_404_2@AirZilong的博客

猜你在找的Swift相关文章