https://blog.csdn.net/u010105969/article/details/53942862 最近开发新功能,其中有加载网页的需求,而最近又了解到了WKWebView,说是耗内存小...因为需要与网页进行交互,而之前使用UIWebView发现与网页的交互并不是很好,于是这次决定使用WKWebView。...在体会着使用新控件且更好的控件的喜悦的时候,一个新的问题出现了--加载网页,后台无法及时获取cookie。后台无法及时获取cookie,在加载网页的时候就无法加载到正确的数据。...(需要多加载几次网页,才能加载到正确的数据) 在查阅相关资料后,发现在使用WKWebView的时候需要我们手动添加cookie到网页中。...在使用WKWebView的时候手动添加cookie: NSMutableDictionary *cookieDic = [NSMutableDictionary dictionary]; NSMutableString
/u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView,而在iOS8之后苹果推出了WKWebView,此控件也能用来显示网页,可与JS的交互却与...在点击前三个按钮的时候会调用方法: // 警告框 - (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString...如果点击第四个conform按钮会调用方法: // 确认框 - (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码中的方法名,而我们在使用WKWebView的时候就不用了。...首先需要增加html中的代码,如在“111111”按钮的点击事件增加代码: window.webkit.messageHandlers.AppModel.postMessage({body: 'call
https://blog.csdn.net/u010105969/article/details/53943101 最近产品经理在验收项目,在验收过程中发现了一个问题:网页中的数据存在缓存。...先说说UIWebView中缓存的清除,代码只有一句: [[NSURLCachesharedURLCache]removeAllCachedResponses]; 再说WKWebView中缓存的清除...WKWebsiteDataStoredefaultDataStore]removeDataOfTypes:websiteDataTypesmodifiedSince:dateFromcompletionHandler:^{ }]; 其中types数组中的内容是可以选择的一些类型...注意:只有在iOS9之后WKWebView才有清除缓存的方法,在写代码的时候切记对系统版本进行判断。 ...增加内容: 在iOS8上还会导致崩溃的代码: /* 导致iOS8奔溃的代码 */ self.webView.allowsBackForwardNavigationGestures
然后点击下一页的按钮 通过js的响应显示另一个网页 最后通过下一页的按钮可以返回到首页。 本文仅仅是h5跟ios 的交互的入门 所以没有做细致的描述。...首先先说一下思路:我的项目中是那样的:首先h5从后台拿到数据,然后我请求h5的界面,然后通过h5的按钮进行选择,通过ios控制按钮到那个界面。 这个小demo不涉及数据传输,只是界面的交互。...我这边采用的方式是:通知传值的方式 思路: 在webviewVC的界面初始化的时候就要把通知加上 然后 登录成功之后 发送通知 将值传给h5 //添加一个通知 等着需要传值给html的时候就用这个通知...但是ios8之后 苹果推出了 wkWebview 比uiwebview 占用内存更小,运行速度更快,现在献上 wkwebview的使用方法,供大家参考。...最近发现了wkwebview 这个是ios8之后出来的,就在#import 这个类里边就包含了这个wkwebview这个类,wkwebview继承于uiview 特点
最近有个需求,原生 APP 使用 webView 内嵌 H5 页面,APP 未登录状态下打开 H5 页面,在页面中登录,再返回 APP 时要保持登录状态(APP 也要同步登录)。...('设备信息:iOS') /* * Apple 系列设备 * name: getMessenger 发送的方法 * data: { 发送的内容 * oppcToken...JS 向 WKWebView 发送消息的途径。...语法: /* * name: 设置 MessageHandler 的第二个参数,iOS 那边来接收 * messageBody: 发送的内容 */ window.webkit.messageHandlers...WebViewJavaScriptBridge 方法,用于 WKWebView & UIWebView 中 OC 和 JS 交互。
.* 四:Bundle中的图片命名 Bundle中的图片命名:如果图片命名为640x1136,则真机无法加载,模拟器无影响,需改为640*1136 五:保持Podfile中的iOS版本和podspec版本统一...Podfile文件中 : platform :ios, ‘9.0’ Podspec文件中: s.ios.deployment_target = '9.0' 要始终保持这两个版本一致,不然pod...WKWebView的问题 (1)如果某个VC中引用了WKWebView,在iOS9系统下点击返回按钮返回上级页面的时候会造成crash....- (void)dealloc { self.webView.scrollView.delegate = nil; // Fix iOS9 crash. } (2)如果引用WKWebView的VC...中还有大标题,那么在iOS12上会出现偏移量的问题。
,iOS8+)Bridge第三方框架(适用于UIWebView和WKWebView)1. url拦截url拦截是在H5请求一个地址后,客户端拦截住这个地址,对地址进行解析处理H5中调用iOS方法代码:弹出登录弹窗(拦截url)iOS中拦截到url代码:- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest...弹窗拦截弹窗包括:alert、confirm、prompt, 和url拦截类似都在回调方法中处理以WKWebView的alert为例:- (void)webView:(WKWebView *)webView...WKScriptMessageHandlerWKScriptMessageHandler是一个协议,iOS中按照协议实现回调方法,在回调方法中可以拿到js发送的消息window.webkit.messageHandlers...拦截url和iOS中使用类似H5中调用iOS方法代码:弹出登录弹窗(拦截url)Android中拦截到url代码:webView.setWebViewClient
一、前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!...} 3、在js中点击按钮,进行弹窗实现 //MARK:WKUIDelegate //此方法作为js的alert方法接口的实现,默认弹出窗口应该只有提示消息,及一个确认按钮,当然可以添加更多按钮以及其他内容...,但是并不会起到什么作用 //点击确认按钮的相应事件,需要执行completionHandler,这样js才能继续执行 参数 message为 js 方法 alert() 中的<message...接口的实现,默认需要有一个输入框一个按钮,点击确认按钮回传输入值 //当然可以添加多个按钮以及多个输入框,不过completionHandler只有一个参数,如果有多个输入框,需要将多个输入框中的值通过某种方式拼接成一个字符串回传...let js = "document.getElementsByTagName('h2')[0].innerText = '这是一个iOS写入的方法'"; //将js注入到网页中 6、js获取DOM节点的几种方式
不过苹果在iOS8以后推出了WKWebView来加载Web。UIWebView自iOS2就有,WKWebView从iOS8才有,毫无疑问WKWebView是将会逐步取代笨重的UIWebView。...,作为一名客户端的测试人员,我更加关注的主要是wkwebview的各大特性背后带来的测试点,以下就从测试的视角分析一下替换wkwebview之后,测试中遇到比较多的问题: 1、首先就是cookie的问题... 以前UIWebView会自动去NSHTTPCookieStorage中读取cookie,但是WKWebView并不会去读取,因此导致cookie丢失以及一系列问题,在测试的过程中我们发现在一个活动页面触发了登录之后...,返回该页面并没有同步到登录态的信息 ? ...从上图可以看出,在app进行登录后,福利社的webview并没有同步获取相应的登录态,究其原因,主要原因是:WKWebView Cookie 问题在于 WKWebView 发起的请求不会自动带上存储于
后来看到《微信iOS客户端将升级为WKWebview内核,请尽快适配》的信息,怀疑是升级带来的问题,按 https://mp.weixin.qq.com/advanced/wiki?...t=t=resource/res_main&id=mp1483682025_enmey iOS WKWebview 网页开发适配指南 切换方法 iOS微信6.5.3版本开始支持开发者手动切换WKWebview...手动切换入口: 在微信会话列表页点击右上角“加号按钮”,选择菜单中的”添加朋友”,在添加朋友界面的搜索框中输入字符串:“:switchweb”,再点击键盘右下角搜索按钮。...切换成功后会提示当前使用的内核是UIWebview或是WKWebview。 切换到WKWebview后自定义分享失效了。...三:有使用JSSDK,并且使用了wx.config进行权限授权需关注jsapi调用的失败问题 变化:WKWebview的内部实现变更使我们对微信内的页面jsapi权限管理做了一定逻辑上的调整,有极小可能会发生以前授权正常的
在iOS中,加载网页目前有两种控件:UIWebView和WKWebView。...以上介绍了WKWebView的优点,但是其也有以下缺点: 1,WKWebView需要iOS9及更高的版本,虽然WKWebView是在iOS8之后引入的,但是iOS8的版本存在重大限制,比如无法访问本地存储的文件...要允许用户在Web历史页面中前进或者后退,要为按钮设置goBack或者goForward的动作。当用户不能在某个方向上再移动时,使用canGoBack或者canGoForward来禁用按钮。...关于KVO,我在之前的文章iOS开发中的设计模式--观察者模式中详述过。...而iOS中的WebKit.framework,就是在WebCore、底层桥接、JSCore引擎等核心模块的基础上,针对iOS平台的项目封装。
不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,在两个平台上支持同一套 API。...js 的交互; 注意: 大多数App需要支持 iOS7 以上的版本,而 WKWebView 只在 iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView ,iOS8 后用...但是目前 IOS10 以下的系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大的提升,满足 iOS 上面使用同一套控件的功能,同时对整个内存的开销以及滚动刷新率和...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage 中,但存储时机有延迟,在 iOS 8上,当页面跳转的时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...APP 的包支持调试,如果不能调试,需要让 iOS 开发人员重签名 APP(可能需要将我们 iOS 设备的 ID 写入到可信任设备列表中,然后使用 iTunes 安装客户端提供的测试包即可)。
截取当前显示在屏幕中的WKWebView UINavigationBarDelegate NavigationType Disable all the '_blank' target in page's...target 在WKWebView的WKNavigationDelegate代理方法中处理应用跳转 简单的处理WKWebView加载新页面 WKWebView显示JS弹框 WKWebView调用js方法...解决方案: 1、iOS监听H5页面goBack返回事件 2、直接使用Safari打开URL 相关文章: iOS 封装WebView 控制器https://kunnan.blog.csdn.net/article.../details/114832679 I 、 iOS监听H5页面goBack返回事件 方式一:通过与JS的桥接,让h5主动通知你的 如果是采用通过与JS的桥接,让h5主动通知你的方案,请看这两篇文章 1...back-forward列表中的内容,相当于回到关闭的之前看过的详情界面。
不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,在两个平台上支持同一套 API。...: 大多数App需要支持 iOS7 以上的版本,而 WKWebView 只在 iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...但是目前 IOS10 以下的系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大的提升,满足 iOS 上面使用同一套控件的功能,同时对整个内存的开销以及滚动刷新率和...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage 中,但存储时机有延迟,在 iOS8上,当页面跳转的时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...浏览器 来调试,但是要注意两点: 如果调试的是 APP 中 WebView 的页面,则需要这个 APP 的包支持调试,如果不能调试,需要让 iOS 开发人员重签名 APP(可能需要将我们 iOS 设备的
不过苹果在 iOS8 以后推出了 WKWebView 来加载 Web,并应用于 iOS 和 OSX 中,它取代了 UIWebView 和 WebView ,在两个平台上支持同一套 API。...js 的交互; 注意: 大多数App需要支持 iOS7 以上的版本,而 WKWebView 只在 iOS8 后才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8...但是目前 IOS10 以下的系统以及很少了, 小结: WKWebView 相较于 UIWebView 在整体上有较大的提升,满足 iOS 上面使用同一套控件的功能,同时对整个内存的开销以及滚动刷新率和...实践发现 WKWebView 实例其实也会将 Cookie 存储于 NSHTTPCookieStorage 中,但存储时机有延迟,在 iOS8上,当页面跳转的时候,当前页面的 Cookie 会写入 NSHTTPCookieStorage...浏览器 来调试,但是要注意两点: 如果调试的是 APP 中 WebView 的页面,则需要这个 APP 的包支持调试,如果不能调试,需要让 iOS 开发人员重签名 APP(可能需要将我们 iOS 设备的
那么,这 5 秒的异步时间是 iOS 原生在异步执行耗时 5 秒的 JS 任务的时间。...二、思路概括 步骤一、 WKWebView 加载本地的一个 H5 页面,然后,在按钮的点击事件里将需要做的耗时事情告诉 iOS 原生 步骤二、iOS 原生收到消息后,创建一个原生下的 JSContext...步骤四、执行完 JS 文件下对应的 function 后进行返回 iOS 主线程,用 WkWebview 对象执行 H5 页面里的一个固定的回调方法,将数据结果返回至前端页面。...doNework:模拟耗时操作 sleep:休眠固定时常(这里写的是5秒) 3、iOS 原生部分 WKWebView 的初始化方式省略,这里需要注意的是 WKWebView 代理循环引用的问题,可以创建一个中间件避免循环引用...WKWebView 代理方法 对比一下 H5 文件下的 loadAction 方法, 1、对应 WKWebView 代理方法里的 name 标识 2、对应 WKWebView 代理方法里的 body
一、WKWebView的使用: 1、初始化 webView初始化:WKPreferences, WKUserContentController -> WKWebViewConfiguration ->...if webView.estimatedProgress >= 1.0 { progressView.isHidden = true } } } 向前、关闭X 按钮实现...(不需要的可以跳过) 当`webView`可以`goForward`时显示`向前`按钮; 当`webView`可以`goBack`时显示`向后`按钮; lazy var forwardBtnItem:...,可以根据项目需求,做响应的处理: 前面三个 `func webView(_ webView: WKWebView, decidePolicyFor ...` 的方法是一样的,只是带的参数不一样,如果实现了..., "莫小言") } // 无参数函数 function testA() { alert("我是JS中的弹窗消息
◆ Hybrid 的一个现状 可能早期都是 PC 端的网页开发,随着移动互联网的发展,iOS、Android 智能手机的普及,非常多的业务和场景都从 PC 端转移到移动端。...iOS调试技巧 Android 调试技巧: App 中开启 Webview 调试(WebView.setWebContentsDebuggingEnabled(true); ) chrome 浏览器输入...主流容器都是这么做的,比如微信、手机百度、携程 没有 Header 一旦出现网络错误或者白屏,App 将陷入假死状态 PS:Native 打开 H5,如果 300ms 没有响应则需要 loading 组件...◆ 账号系统的设计 Webview 中跑的网页,账号登录与否由是否携带密钥 cookie 决定(不能保证密钥的有效性)。...WKWebView 网络请求拦截 方法一(Native 侧): 原生 WKWebView 在独立于 app 进程之外的进程中执行网络请求,请求数据不经过主进程,因此在 WKWebView 上直接使用 NSURLProtocol
领取专属 10元无门槛券
手把手带您无忧上云