首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

wkwebview加载完成_【Swift】WKWebView与JS的交互使用

一、前言 近日,有朋友问我关于WKWebView与JS的交互问题,可我之前一直使用的是UIWebView,也不曾做过WKWebView的交互啊!...四、WKUIDelegate的代理方法 用来做一些页面上的事件,弹窗警告,提醒等。...//接收到警告面板 optional func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String...:WKUIDelegate //此方法作为js的alert方法接口的实现,默认弹出窗口应该只有提示消息,及一个确认按钮,当然可以添加更多按钮以及其他内容,但是并不会起到什么作用 //点击确认按钮的相应事件...alertViewController, animated: true, completion: nil) } // confirm //作为js中confirm接口的实现,需要有提示信息以及两个相应事件

5.5K00

小程序实现原理解析

实现逻辑部分的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注册事件处理方法

10.6K133

小程序实现原理解析

实现逻辑部分的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注册事件处理方法

5.4K101

基于 Vue 和 TS 的 Web 移动端项目实战心得

本项目以 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。

3.4K21

移动 Web 最佳实践(干货长文,建议收藏)

本项目以 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。

2.4K10

委托模式

描述 事件委托,委托模式就是利用事件的冒泡机制把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事件的是外层元素,当事件响应到需要绑定的元素上时,会通过事件冒泡机制从而触发它的外层元素的绑定事件上...而事件委托通常使用的是冒泡事件模型,对于事件冒泡,当一个元素接收事件的时候,会把他接收到的事件传给自己的父级,一直到window,当然其传播的是事件,绑定的执行函数并不会传播,如果父级没有绑定事件函数...事件冒泡的原因是事件源本身可能没有处理事件的能力,即处理事件的函数并未绑定在该事件源上。它本身并不能处理事件,所以需要将事件传播出去,从而能达到处理该事件的执行函数。...事件委托 举个例子,当接到一个小需求做一个日历功能,需要当用户点击日历的格子时,格子的背景色变成灰色,如果我们为每一个日期元素都绑定一个事件,这样会增加很多事件监听,无意中消耗了内存,尤其是在老版本浏览器例如...uid="9">9 document.getElementById("u1").addEventListener

67010

移动 web 最佳实践(干货长文)

本项目以 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。

2.7K61

基于 Vue 和 TS 的 Web 移动端项目实战心得

本项目以 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,不是实时存储的。

2.2K10

iOS 下利用简单代码实现 JS 双引擎功能思路

二、思路概括 步骤一、 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

2.6K00

iOS中WKWebView交互使用总结

正文 基础使用 ---- 构建和配置 WKWebView是继承自UIView的,因此构建方式还是很老套的,通常 - (instancetype)initWithFrame:(CGRect)frame...ViewController中声明两个代理WKNavigationDelegate,WKScriptMessageHandler,前者是用来处理webView加载视图的各种情况的,后者是主要用来处理交互事件的...loadRequest:navigationAction.request]; } decisionHandler(WKNavigationActionPolicyAllow); } //接收到相应数据后...重点:JS交互 ---- WKWebView的交互方法和之前的UIWebView其实本质上没有什么太大的差别,都是通过发送方法名找到对应的方法执行对应的操作。...self.webView.configuration.userContentController removeScriptMessageHandlerForName:@"mjxLogin"]; } 对监听的处理的代理 //用来接收

2.8K40

iOS开发中的WKWebView与JS的交互

(博客地址: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

2.2K20

H5与Android&iOS客户端原生APP通信交互实现

最近有个需求,原生 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

2.5K10
领券