2.1 利用HTML5 Audio/Video 事件 HTML5 Audio/Video 事件代码可以由H5同事完成,也可以由App端注入。...注入代码如下: NSString *jSString3 = @"document.getElementsByTagName('video')[0].addEventListener('canplay',...WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; [configuration.userContentController addUserScript:wkUScript6]; App端接收...pause"]; [configuration.userContentController addScriptMessageHandler:self name:@"ended"]; 使用以下方法即可获取播放器事件...ended"] == NSOrderedSame) { NSLog(@"video is ended"); } } 参考资料: HTML 音频/视频参考手册 video 属性和事件用法大全
React Native 和 H5 交互 //接收来自H5的消息 onMessage = (e) => { Log("WebView onMessage 收到H5参数:", e.nativeEvent.data...}; window.postMessage(JSON.stringify(params)); //发送消息到rn } window.document.addEventListener...("message", function (e) { //注册事件 接收数据 const message = e.data; //字符串类型 console.log...原生调用 H5 方法 [wkWebView evaluateJavaScript:@"js方法名()" completionHandler:^(id _Nullable response, NSError...WKWebView注入ScriptMessageHandler [wkWebView.configuration.userContentController addScriptMessageHandler
document.body.addEventListener('touchmove', function (e) { e.preventDefault(); //阻止默认的处理方式(阻止下拉滑动的效果...解释 微信在 Android 端和 IOS 端使用的不是同样的浏览器内核: Android 版 微信浏览器 :QQ浏览器 X5内核(相当于使用的 Chrome) IOS 版 微信浏览器 :WKWebView...浏览器内核总结:https://www.cnblogs.com/jesse131/p/4888857.html Chrome 默认的事件监听参数 image.png useCapture:false...scrolling performance and reducing crashes 更新了根文档触摸事件侦听器,默认使用passive:true提高滚动性能并减少崩溃 所以 Safari 中默认使用了...passive:true,告诉浏览器,此监听事件中,不会阻止默认的页面滚动。
一、前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!...四、WKUIDelegate的代理方法 用来做一些页面上的事件,弹窗警告,提醒等。...//接收到警告面板 optional func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String...:WKUIDelegate //此方法作为js的alert方法接口的实现,默认弹出窗口应该只有提示消息,及一个确认按钮,当然可以添加更多按钮以及其他内容,但是并不会起到什么作用 //点击确认按钮的相应事件...alertViewController, animated: true, completion: nil) } // confirm //作为js中confirm接口的实现,需要有提示信息以及两个相应事件
引言 富文本编辑器的应用场景:编辑商品详情 预览: 设计思路:编辑器基于WKWebview实现,Editor使用WKWebview加载一个本地editor.html文件,Editor使用evaluateJavaScript...window.webkit.messageHandlers.openImage.postMessage($(this).attr("src")); // 给openImage 传递SRC参数 // 监听点击事件调研...OC方法 var div = document.getElementById('_column'); div.addEventListener(...:configuration]; return _webView; } #pragma mark - ******** 处理与JS的桥接 /** 接收参数 */ - (void)userContentController...WKWebView中需要针对不同操作系统进行相关方法的重写。
实现逻辑部分的JS还是通用的ES规范,并且runtime还是Webview(IOS WKWEBVIEW, ANDROID X5)。 小程序 小程序目录结构 ?...视图层和逻辑层通过系统层的JSBridage进行通信,逻辑层把数据变化通知到视图层,触发视图层页面更新,视图层把触发的事件通知到逻辑层进行业务处理。 小程序架构图: ?...chrome.runtime.connect方式,也提供了直接操作chrome native原生方法的接口) 发送消息:window.postMessage(data, ‘*’);,// data里指定 webviewID 接收消息...:window.addEventListener(‘message’, messageHandler); // 消息处理并分发,同样支持调用nwjs的原生能力。...组件触发事件(带上webviewID),调用WeixinJSBridge的接口,publish到native,然后native再分发到AppService层指定webviewID的Page注册事件处理方法
起因:对企业内部应用进行架构重新设计与重构 位置:旧项目中HR助手的H5功能对接上线 网页中ajax请求未做任何异常处理,移动端点击goback未响应事件 错误异常:旧的h5开发人员由于不规范书写代码,...UIWebView 升级 WKWebView 导致网页中onUnLoad 方法失效。 导致:h5表单不断的创建,没有校验,数据未删除。...处理方案一:换回UIWebView(负责人的开发人员都不会这么处理) 处理方案二:h5页面修改表单处理逻辑(涉及到线上的一些功能,未采用)一劳永逸最优方案 处理方案三:WKWebView调用webview
本项目以 h5 调用 native 提供的同步日历接口为例,演示如何在 dsbridge 基础上进行两端通信的。...mem 基本原理是通过以接收的函数为 key 创建一个 WeakMap,然后再以函数参数为 key 创建一个 Map,value 就是函数的执行结果,同时将这个 Map 作为刚刚的 WeakMap 的...validator 方法可以接收单个或多个需要校验的数据的 key,然后就会在 setRules 生成的对象 validator 中寻找 key 对应的 async-validator 实例,最后调用实例的校验方法...常见问题 iOS WKWebView cookie 写入慢以及易丢失 现象: 原因:WKWebView 对 NSHTTPCookieStorage 写入 cookie,不是实时存储的。...解决办法:全局监听 input 失焦事件,当触发事件后,将 body 的 scrollTop 设置为 0。
前言 在iOS8中,苹果推出了WKWebView。WKWebView有一个突出特点,就是内存占用少。 但作为一个全新的WebView,API相比于之前的UIWebView肯定会有所不同。...WKNavigationDelegate 如命名,这个是WKWebView的导航的代理。它控制了WKWebView在加载一个页面流程中的各个关键时间节点的。...相当于WKWebView加载的生命周期方法。...*)webView didFailProvisionalNavigation:(WKNavigation *)navigation{ NSLog(@"页面加载失败"); } // 接收到服务器跳转请求之后调用....postMessage(需要传递的数据) 原生调用js方法 [self.webView evaluateJavaScript:@"function('action')" completionHandler
描述 事件委托,委托模式就是利用事件的冒泡机制把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上...而事件委托通常使用的是冒泡事件模型,对于事件冒泡,当一个元素接收到事件的时候,会把他接收到的事件传给自己的父级,一直到window,当然其传播的是事件,绑定的执行函数并不会传播,如果父级没有绑定事件函数...事件冒泡的原因是事件源本身可能没有处理事件的能力,即处理事件的函数并未绑定在该事件源上。它本身并不能处理事件,所以需要将事件传播出去,从而能达到处理该事件的执行函数。...事件委托 举个例子,当接到一个小需求做一个日历功能,需要当用户点击日历的格子时,格子的背景色变成灰色,如果我们为每一个日期元素都绑定一个事件,这样会增加很多事件监听,无意中消耗了内存,尤其是在老版本浏览器例如...uid="9">9 document.getElementById("u1").addEventListener
本项目以 h5 调用 native 提供的同步日历接口为例,演示如何在 dsbridge 基础上进行两端通信的。...mem 基本原理是通过以接收的函数为 key 创建一个 WeakMap,然后再以函数参数为 key 创建一个 Map,value 就是函数的执行结果,同时将这个 Map 作为刚刚的 WeakMap 的...validator 方法可以接收单个或多个需要校验的数据的 key,然后就会在 setRules 生成的对象 validator 中寻找 key 对应的 async-validator 实例,最后调用实例的校验方法...('error', ..., true) 在事件捕获阶段获取,然后筛选出资源加载失败的错误并手动上报错误。...常见问题 iOS WKWebView cookie 写入慢以及易丢失 原因:WKWebView 对 NSHTTPCookieStorage 写入 cookie,不是实时存储的。
根据需求需要将老项目中的 WebView 替换成 WKWebView,期间查阅了不少文档和资料,之前也发布了几篇 WKWebView 相关的优秀文章。...WKWebView 几个不常用的特性 WKWebview 加载过程中的性能指标图解 WKWebview 秒开的实践及踩坑之路 今天分享的这篇文章全面的介绍了 WKWebView,作者根据开发和使用经验从属性...网页的导航代理,可以理解为网页的生命周期事件循环。...UIDataDetectorTypeLink // 网页地址 UIDataDetectorTypeAddress // 邮件地址 UIDataDetectorTypeCalendarEvent // 格式化为日历事件的信息...FAQ WKWebView 中 H5 css 动画失效的问题?
二、思路概括 步骤一、 WKWebView 加载本地的一个 H5 页面,然后,在按钮的点击事件里将需要做的耗时事情告诉 iOS 原生 步骤二、iOS 原生收到消息后,创建一个原生下的 JSContext...步骤四、执行完 JS 文件下对应的 function 后进行返回 iOS 主线程,用 WkWebview 对象执行 H5 页面里的一个固定的回调方法,将数据结果返回至前端页面。...标注为统一回调的这个 JS 方法,它就是原生在执行完异步任务后要执行的统一回调,这里为了区分是哪个异步方法的调用结果,那么,就返回了之前 JS 获取到的异步方法名,JS 本身就是同步,那么就可以根据规则来接收这些原生返回的数据了...doNework:模拟耗时操作 sleep:休眠固定时常(这里写的是5秒) 3、iOS 原生部分 WKWebView 的初始化方式省略,这里需要注意的是 WKWebView 代理循环引用的问题,可以创建一个中间件避免循环引用...WKWebView 代理方法 对比一下 H5 文件下的 loadAction 方法, 1、对应 WKWebView 代理方法里的 name 标识 2、对应 WKWebView 代理方法里的 body
正文 基础使用 ---- 构建和配置 WKWebView是继承自UIView的,因此构建方式还是很老套的,通常 - (instancetype)initWithFrame:(CGRect)frame...ViewController中声明两个代理WKNavigationDelegate,WKScriptMessageHandler,前者是用来处理webView加载视图的各种情况的,后者是主要用来处理交互事件的...loadRequest:navigationAction.request]; } decisionHandler(WKNavigationActionPolicyAllow); } //接收到相应数据后...重点:JS交互 ---- WKWebView的交互方法和之前的UIWebView其实本质上没有什么太大的差别,都是通过发送方法名找到对应的方法执行对应的操作。...self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"mjxLogin"]; } 对监听的处理的代理 //用来接收
App 接收到主机返回的数据,进行解析处理,最后展示到界面上。 发送请求获取资源的一方称为客户端。接收请求提供服务的一方称为服务端。...(2)通过 URLSessionDataDelegate(代理)处理请求与响应过程的事件和接收服务端返回的数据。...} } // MARK:- URLSessionDataDelegate extension ViewController: URLSessionDataDelegate { // 开始接收数据...,默认情况下请求之后不接收服务器的数据即不会调用后面获取数据的代理方法 completionHandler(URLSession.ResponseDisposition.allow)...与JavaScript交互 创建WKWebView lazy var webView: WKWebView = { // 创建WKPreferences let preferences
(博客地址:http://blog.csdn.net/u010105969/article/details/53189934),可当时用来展示网页的控件是UIWebView,而在iOS8之后苹果推出了WKWebView...注意:在利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码中的方法名,而我们在使用WKWebView的时候就不用了。....'); 来给我们传递数据,我们用runJavaScriptAlertPanelWithMessage这个方法来接收JS传递给我们的数据。...首先需要增加html中的代码,如在“111111”按钮的点击事件增加代码: window.webkit.messageHandlers.AppModel.postMessage({body: 'call...客户端中需增加的代码: // 注入JS对象名称AppModel,当JS通过AppModel来调用时, // 我们可以在WKScriptMessageHandler代理中接收到 [config.userContentControlleraddScriptMessageHandler
最近有个需求,原生 APP 使用 webView 内嵌 H5 页面,APP 未登录状态下打开 H5 页面,在页面中登录,再返回 APP 时要保持登录状态(APP 也要同步登录)。.../appBridge' appBridge(token, url, device) 这里我查了一下上面的两个方法: MessageHandler WKWebView 有一个内容交互控制器,该对象提供了通过...JS 向 WKWebView 发送消息的途径。...语法: /* * name: 设置 MessageHandler 的第二个参数,iOS 那边来接收 * messageBody: 发送的内容 */ window.webkit.messageHandlers...window.webkit.messageHandlers.getMessenger.postMessage(data) WebViewJavascriptBridge 针对 Android 设备,这里使用的 WebViewJavaScriptBridge 方法,用于 WKWebView
领取专属 10元无门槛券
手把手带您无忧上云