WKWebView的简单使用,与js交互
来源:互联网 发布:.net web编程教程 编辑:程序博客网 时间:2024/05/16 07:27
import UIKitimport WebKit@objc class BasicWkWebViewController: BasicViewController,WKNavigationDelegate { var webView: WKWebView? init(url: String!) { super.init(nibName: nil, bundle: nil) let requsetUrl = URL.init(string: url) let request = URLRequest.init(url: requsetUrl!) let wkWeb = WKWebView.init(frame: self.view.bounds) self.view.addSubview(wkWeb) wkWeb.load(request) wkWeb.navigationDelegate = self; self.webView = wkWeb } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { let requeststr = navigationAction.request.mainDocumentURL?.relativeString; if requeststr?.range(of: "#") != nil{ let data = self.requesParmeter(request: requeststr!) if let doStr = data["do"]{ let selector = NSSelectorFromString((doStr as! String).appending(":")) if self.responds(to: selector) { self.perform(selector, with: data) decisionHandler(WKNavigationActionPolicy.cancel) } } } decisionHandler(WKNavigationActionPolicy.allow) } func requesParmeter(request: String) ->NSDictionary{ let array = request.components(separatedBy: "#") let requestStr = array.last return self.getrequestjson(requeststr: requestStr!) } func getrequestjson(requeststr: String) ->NSDictionary { let requestString = requeststr.removingPercentEncoding let strData = requestString?.data(using: String.Encoding.utf8) do { let weatherDic = try JSONSerialization.jsonObject(with: strData!, options: .mutableLeaves) return weatherDic as! NSDictionary; } catch { } return NSDictionary() } override func viewDidLoad() { super.viewDidLoad() //self.webView.addObserver(self, forKeyPath: "title", options: .new, context: nil) } // override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { // super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) // if keyPath == "title" { // self.title = change?[NSKeyValueChangeKey.newKey] as? String // } // } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }// deinit {// self.webView?.removeObserver(self, forKeyPath: "title")// }}//js方法extension BasicWkWebViewController{}
OC版本
-(BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *requeststr=request.mainDocumentURL.relativeString;
if([requeststr rangeOfString:@”#”].location!=NSNotFound)
{
NSDictionary *data = [self requesParmeter:requeststr];
for (NSString *str in self.webStringArray) {
if (![data.allKeys containsObject:@”do”]) return NO;
// if ([requeststr rangeOfString:str].location != NSNotFound) {
if ([data[@”do”] isEqualToString:str]) {
[self performSelector:NSSelectorFromString([str stringByAppendingString:@”:”]) withObject:data];
return NO;
}
}
}
return YES;
}
//初始化公用参数的数组
- (NSArray *)webStringArray
{
if (_webStringArray == nil) {
_webStringArray = @[];
}
return _webStringArray;
}
- WKWebView的简单使用,与js交互
- WKWebView与JS的交互
- WKWebView 与JS的交互
- wkwebview与js的交互
- WKWebView与js交互
- WKWebView与JS交互
- WKWebView与JS交互
- WKWebView与js交互
- WKWebView与JS交互
- WKWebView与js交互
- WKWebView 与 JS 交互
- WKWebView与js交互
- iOS wkwebview的基本使用与基于wkwebview的js、native 交互
- WKWebView OC与js的交互
- UIWebView、WKWebView与js的交互
- WKWebView 的使用(和js交互)
- WKWebView的使用及js交互Demo
- oc与js交互-----WKWebView
- 递归算法-->汉诺塔hanoi
- android消息通知更新(小红点,数字提醒)之badgeview
- ijkplayer集成
- datatable添加行
- View的工作原理(二)
- WKWebView的简单使用,与js交互
- 面向对象程序设计之基类,派生类与虚函数
- (转) jQuery易忽略的知识点总结
- Makefile中源码和编译标志的位置
- PHP正则匹配
- Recording Videos Simply笔记
- Java设计模式概述之结构型模式(组合模式)
- python学习(二)pycharm安装配置篇
- Git暂存区