设为首页 加入收藏

TOP

【Swift】WKWebView与JS的交互使用(四)
2019-08-15 00:11:51 】 浏览:495
Tags:Swift WKWebView 交互 使用
首页" //创建配置对象 let configuration = WKWebViewConfiguration() //为WKWebViewController设置偏好设置 let preference = WKPreferences() configuration.preferences = preference //允许native与js交互 preference.java scriptEnabled = true //初识化webView let webView = WKWebView.init(frame: CGRect(x: 0, y: 64, width: self.view.frame.size.width, height: 300)) let path = Bundle.main.path(forResource: "wKWebView", ofType: "html") webView.navigationDelegate = self webView.uiDelegate = self let request = URLRequest.init(url: URL.init(fileURLWithPath: path!)) webView.load(request) self.view.addSubview(webView) self.webView = webView let userContentController = WKUserContentController() configuration.userContentController = userContentController userContentController.add(self,name: "getMessage") self.userContentController = userContentController let btn = UIButton.init(frame: CGRect(x: 100, y: 390, width: 100, height: 50)) btn.setTitleColor(.black, for: .normal) btn.setTitle("oc调用js", for: .normal) btn.addTarget(self, action: #selector(btnAction), for: .touchUpInside) self.view.addSubview(btn) self.view.backgroundColor = .white } @objc func btnAction() { self.webView?.eva luatejava script("testInput('123')", completionHandler: { (data , error) in print(data as Any) }) self.webView?.eva luatejava script("testObject('xjf',26)", completionHandler: { (data, err) in print("\(String(describing: data)),\(String(describing: err))") }) } func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { print("\(message.name)" + "\(message.body)") // message.name 方法名 // message.body 传递的数据 } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { // webView.eva luatejava script("testA()") { (data, err) in // print("\(String(describing: data)),\(String(describing: err))") // } } func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { print("\(error)") } //MARK:WKUIDelegate //此方法作为js的alert方法接口的实现,默认弹出窗口应该只有提示消息,及一个确认按钮,当然可以添加更多按钮以及其他内容,但是并不会起到什么作用 //点击确认按钮的相应事件,需要执行completionHandler,这样js才能继续执行 ////参数 message为 js 方法 alert(<message>) 中的<message> func webView(_ webView: WKWebView, runjava scriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) { let alertViewController = UIAlertController(title: "提示", message:message, preferredStyle: UIAlertController.Style.alert) alertViewController.addAction(UIAlertAction(title: "确认", style: UIAlertAction.Style.default, handler: { (action) in completionHandler() })) self.present(alertViewController, animated: true, completion: nil) } // confirm //作为js中confirm接口的实现,需要有提示信息以及两个相应事件, 确认及取消,并且在completionHandler中回传相应结果,确认返回YES, 取消返回NO //参数 message为 js 方法 confirm(<message>) 中的<message> func webView
首页 上一页 1 2 3 4 5 下一页 尾页 4/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇zap+日志分级分文件+按时间切割日.. 下一篇ubuntu 下 go 语言调试器 dlv 的..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目