Swift WKWebView的js调用swift
发布时间:2020-12-14 06:23:00 所属栏目:百科 来源:网络整理
导读:最近项目需求,需要用到 JavaScriptCore和 WebKit,但是网上的资源有限,而且比较杂,都是一个博客复制另外一个博客,都没有去实际敲代码验证,下面给大家分享一下我的学习过程。 js调用swift controller的代码: import UIKitimport WebKitclass JSCallSwif
最近项目需求,需要用到JavaScriptCore和WebKit,但是网上的资源有限,而且比较杂,都是一个博客复制另外一个博客,都没有去实际敲代码验证,下面给大家分享一下我的学习过程。 js调用swift controller的代码:
import UIKit import WebKit class JSCallSwiftController: UIViewController { var webView = WKWebView() override func viewDidLoad() { super.viewDidLoad() setWebView() } func setWebView() { webView.frame = view.frame let config = WKWebViewConfiguration() //偏好设置 config.preferences = WKPreferences() //字体 config.preferences.minimumFontSize = 10 //设置js跳转 config.preferences.javaScriptEnabled = true //不自动打开窗口 config.preferences.javaScriptCanOpenWindowsAutomatically = false //web内容处理池 config.processPool = WKProcessPool() //js和webview内容交互 config.userContentController = WKUserContentController() //注入js对象名称为appmodel,当js通过appmodel来调用 //可以在wkscriptMessagehandler的代理中接收到 config.userContentController.add(self,name: "AppModel") //webView webView = WKWebView(frame: view.bounds,configuration: config) view.addSubview(webView) let url = Bundle.main.url(forResource: "JSCallOC",withExtension: "html") webView.load(URLRequest(url:url!)) } } extension JSCallSwiftController: WKNavigationDelegate { } extension JSCallSwiftController: WKScriptMessageHandler { func userContentController(_ userContentController: WKUserContentController,didReceive message: WKScriptMessage) { print(message.body) } } html里面要写入的代码: function log(n) { window.webkit.messageHandlers.AppModel.postMessage({body:n}) }这样就很简单的实现了js调用swift的方法; 如果转载请注明转于:AirZilong的博客 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |