代理方法
添加引用
1 | import WebKit |
代理 WKNavigationDelegate
页面加载状态的回调
代理方法
1 | func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { |
代理 WKUIDelegate
处理JS弹窗的回调
代理方法
1 | //消息弹窗 |
交互
Swift调用JS方法
1 | self.webview.evaluateJavaScript("loadData('123')") { (obj, error) in |
JS中的方法
1 | function loadData(questionid) { |
JS调用Swift方法
添加代理WKScriptMessageHandler
代理方法
1 | func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { |
WKWebView
配置
1 | let config = WKWebViewConfiguration.init() |
JS调用
1 | $("#question_group").click(function () { |
进度条
添加进度条
1 | self.progressView = UIProgressView.init() |
监听进度变化
1 | override func viewDidAppear(_ animated: Bool) { |
后退键
1 | func setNavi() { |
在之前的页面加载完成回调中重新设置导航栏
1 | func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { |
替换页面中的引用的JS/CSS为本地文件
暂时没有什么好的解决方法 没有像android可以拦截替换的方法