1、autoresizingMask http://www.cocoachina.com/ios/20141216/10652.html
2、UIWebView的一些用法总结:设置阴影透明;移除外边阴影(即隐藏scrollview上的图片);点连接跳到safari(在代理方法拦截url,并用uiapplication的openurl方法)
https://blog.csdn.net/zhaoweixing1989/article/details/13021513
3、UIWebViewNavigationType
linkClicked触及一个链接;formSubmitted提交表单;backForward前进或返回;reload重新加载;
formResubmitted重复提交表单;other其他行为 https://blog.csdn.net/zhaoweixing1989/article/details/13021513
4、UIWebView的scalesPageToFit的作用:1:整屏显示内容:内容太大的话会跑到屏幕外,尤其是当有大图片时;2:并且用户可以用捏合动作来放大或缩小页面来查看内容 https://www.jianshu.com/p/17c07d77c8b8
5、UIWebView的代理:UIWebViewDelegate
1》是否允许加载页面请求:- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
2》页面开始加载:- (void)webViewDidStartLoad:(UIWebView *)webView;
3》页面完成加载:- (void)webViewDidFinishLoad:(UIWebView *)webView;
4》页面加载失败:- (void)webView:(UIWebView *)webView didFailLoadWithError:(nullable NSError *)error;
6、WKWebView的代理:WKNavigationDelegate(其实是将UIWebViewDelegate细化)
1》请求之前决定是否要跳转,用户点击网页上的链接,需要打开新页面时调此方法:- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
2》接收到相应数据后,决定是否跳转:- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler;
3》页面开始加载时调用:- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation;
4》主机地址被重定向时调用:- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(null_unspecified WKNavigation *)navigation;
5》页面加载失败时调用:- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error;
6》内容开始返回时调用:- (void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation;
7》页面加载完毕时调用:- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation;
8》跳转失败时调用:- (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error;
9》需要证书验证,使用AFN进行Https证书验证是一样的:- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential * _Nullable credential))completionHandler;
10》9.0后才能用,web内容处理中断时会触发:- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView API_AVAILABLE(macosx(10.11), ios(9.0));
WKWebView的枚举:
WKNavigationActionPolicy:WKNavigationActionPolicyCancel(发请求前决定不跳转)WKNavigationActionPolicyCancel(发请求之前决定不跳转)
WKNavigationResponsePolicy:WKNavigationResponsePolicyCancel(收到响应决定不跳转)WKNavigationResponsePolicyAllow(收到响应决定跳转)
6、跨域 浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了. https://www.cnblogs.com/chenshishuo/p/4919224.html
7.uiwebview支持跨域,wkwebview不支持跨域,据说safari是uiwebview写的,而WKWebView 使用和 Safari 相同的 Nitro JS 引擎性能 https://www.jianshu.com/p/00770d661916
8、解决wkwebview的跨域问题 https://blog.csdn.net/chenyong05314/article/details/53735215
9、wk缓存;关于cookie;关于跨域;js交互;关于NSUrlProtocaol拦截;关于post请求的坑;加载本地url的坑;捏合手势 https://blog.csdn.net/chenyong05314/article/details/53735215
10、wk交互及解决post请求的坑 https://www.jianshu.com/p/403853b63537
11、wkwebview源码解析(nice):https://www.cnblogs.com/tangyuanby2/p/5377248.html
12、注入js: - (void)addUserScript:(WKUserScript *)userScript;
13、js调原生:- (void)addScriptMessageHandler:(id<WKScriptMessageHandler>)scriptMessageHandler name:(NSString *)name;
14、webviewjavacriptbridge下载地址 https://github.com/marcuswestin/WebViewJavascriptBridge
========以下是UIWebView
15、1》内存泄露(注入中间对象;注入对象改为[self class];使用Block替换JSExport协议);https://www.jianshu.com/p/939db6215436
2》创建JSContext,解决Ahtml5调到Bhtml页面,B页面交互无响应的情况;https://www.jianshu.com/p/939db6215436
16、js与oc交互:
JSValue:代表JavaScript实体,一个JSValue可表示多个js原始类型,boolean, integers, doubles,甚至包括对象和函数
JSContext: 代表JavaScript的运行环境,你需要用JSContext来执行JavaScript代码。所有的JSValue都是捆绑在一个JSContext上的。
JSExport(js调oc时用): 这是一个协议,可以用这个协议来将原生对象导出给JavaScript,这样原生对象的属性或方法就成为了JavaScript的属性或方法,非常神奇。
向UIWebVIew拿JSContext环境:1》KVC @"documentView.webView.mainFrame.javaScriptContext";
2》通过Nick Hodapp对象及webView:didCreateJavaScriptContext:forFrame:方法拿
3》JSExportAs
4》注意UIWebView执行JS代码使用的是stringByEvaluatingJavaScriptFromString方法
5》JavaScriptCore执行JS代码使用的是- (JSValue *)evaluateScript:(NSString *)script;方法
https://www.jianshu.com/p/59242a92d4f2
https://blog.csdn.net/robinson_911/article/details/70257981
17、JavaScriptcore初探:JSManagedValue解决循环引用 https://hjgitbook.gitbooks.io/ios/content/04-technical-research/04-javascriptcore-note.html