首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JSBridge 原理

这时我们想到了 CordovaCordova 提供了一组与设备相关 API ,是早期 JS 调用原生代码来实现原生功能常用方案。...注入 API 基于 Webview 提供能力,我们可以向 Window 注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。... 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用。...这样有利于保持 API 与 Native 一致性,但是缺点是 Native 注入方法和时机都受限,JS 调用 Native 之前需要先判断 JSBridge 是否注入成功 使用规范 H5

2.1K40

iOS下JS与OC互相调用(二)--WKWebView 拦截URL

除了代理方法WKWebView使用不太一样,关于WKWebView更详尽讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...1.创建WKWebView,加载本地HTML。 WKWebView创建有几点不同: 1.初始化多了个configuration参数,当然这个参数我们也可以不传,直接使用默认设置就好。...如果在HTML中要使用alert等弹窗,就必须得实现UIDelegate相应代理方法。 3.iOS 9之前,WKWebView加载本地HTML会有一些问题。...这时候就是OC 调用JS 方法场景。 WKWebView 提供了一个新方法evaluateJavaScript:completionHandler:,实现OC 调用JS 等场景。...4.WKWebView使用弹窗 在上面提到,如果在WKWebView使用alert、confirm 等弹窗,就得实现WKWebViewWKUIDelegate中相应代理方法

3.4K50
您找到你想要的搜索结果了吗?
是的
没有找到

iOS下JS与原生OC互相调用(总结)

JS中firstClick,拦截到url scheme全都被转化为小写。 2.html中需要设置编码,否则中文参数可能会出现编码问题。..."]; 再然后定义好JS需要调用方法,例如JS要调用share方法: 则可以UIWebView加载url完成后,在其代理方法中添加要调用share方法: - (void)webViewDidFinishLoad...')"; [context evaluateScript:textJS]; 重点: stringByEvaluatingJavaScriptFromString是一个同步方法使用它执行JS方法时...官方推荐使用WKWebViewevaluateJavaScript:completionHandler:代替这个方法。...+ WebViewJavascriptBridge iOS下JS与OC互相调用(七)--Cordova 基础 iOS下JS与OC互相调用(八)--Cordova详解+实战 剩下几篇未完待续。

4.9K30

iOS中WKWebView交互使用总结

configuration:(WKWebViewConfiguration *)configuration 这个方法就够用了,第一个参数不多说,按照通常使用就可以,第二个参数是对webView配置对象...然后是对WKWebView基本设置, self.webView.scrollView.bounces = NO; self.webView.navigationDelegate = self; 设置了取消弹性和代理...='none';" completionHandler:nil]; 值得注意是,这里其实是通过调用webView直接使用JS代码实现操作,如果有需要还可以实现别的功能,而且这个方法最后有一个执行完毕之后...重点:JS交互 ---- WKWebView交互方法和之前UIWebView其实本质没有什么太大差别,都是通过发送方法名找到对应方法执行对应操作。...//用来接收js调用本地方法拦截器 -(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage

2.8K40

直播卖货系统源码中,如何展示html格式商品详情

开发iOS版直播卖货系统源码过程中,如何在html展示商品详情,下面小编将从WKWebView入手,来介绍下实现过程。...加载完成代理方法中更改webViewframe - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified..., _goodListView.bottom, _window_width, [result doubleValue]);//将WKWebView高度设置为内容高度 //更改背景scrollview滑动范围...代理方法中拦截图片添加点击方法,可使用HZPhotoBrowser来展示图片 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...:%@",navigationAction.request.URL.absoluteString); 以上,就是开发直播卖货系统源码时,利用WKWebView展示html格式商品详情过程。

1.1K30

小白必看,JSBridge 初探

注入 API 基于 Webview 提供能力,我们可以向 Window 注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。...WKWebview 提供了 window.webkit.messageHandlers 方法,支持 iOS 8.0 及以上系统。UIWebview 几年前常用,目前已不常见。... 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用。...这样有利于保持 API 与 Native 一致性,但是缺点是 Native 注入方法和时机都受限,JS 调用 Native 之前需要先判断 JSBridge 是否注入成功 使用规范 H5 调用 Native

1.4K10

iOS_WKWebView与JS交互 Demo

方法报错 2、WKNavigationDelegate: 这个代理加载各个过程中都有回调,可以根据项目需求,做响应处理: 前面三个 `func webView(_ webView: WKWebView...其实上面的代理实现已经差不多了,下面补充并说明一下: 1、evaluateJavaScript使用 1)、首先我们`WKNavigationDelegate``didFinish`方法回调后,...就可以使用`evaluateJavaScript`跟JS交互了: // MARK: - 加载完成 func webView(_ webView: WKWebView, didFinish navigation...{ print("加载完成: didFinish") // 调用js方法(把标题h1设置成红色) webView.evaluateJavaScript("changeHead()...2)、这里app原生页面写了两个button调用JS方法/获取信息 func setupButtons() { let baseHeight = (navigationController?.

3.1K20

小白必看,JSBridge 初探

注入 API 基于 Webview 提供能力,我们可以向 Window 注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。...WKWebview 提供了 window.webkit.messageHandlers 方法,支持 iOS 8.0 及以上系统。UIWebview 几年前常用,目前已不常见。... 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用。...这样有利于保持 API 与 Native 一致性,但是缺点是 Native 注入方法和时机都受限,JS 调用 Native 之前需要先判断 JSBridge 是否注入成功 使用规范 H5 调用 Native

2.5K10

App与WebView交互方式

通过执行函数evaluateJavaScript:completionHandler:,我们可以传递app端中数据给webview,并触发html脚本函数调用,从而响应app行为。...2、webview如何调用app端函数呢? html脚本中添加iframe对象,通过设置iframesrc属性,可成功触发WKWebview代理方法调用。...webView:decidePolicyForNavigationAction:decisionHandler: 常见方式就是脚本函数中设置iframesrc属性值,触发WKWebview代理函数调用..., 我们可以代理方法中拦截请求,首先iframesrc值也就是我们自定义scheme,通过对该scheme判断来得知我们想干什么,从而去调用app中对应函数。...除了可以自定义scheme中传递我们需要参数外,我们可以html中脚本中把数据储存好,通过evaluateJavaScript:completionHandler:来调用脚本函数来返回需要参数

1.4K20

【iOS 开发】WebViewJavaScriptBridge 实现原理

WebViewJavaScriptBridge 使用一个不可见 iFrame 来触发消息传递, 应该是为了兼容 UIWebView 和 WKWebView。...几个参数 kBridgeLoaded "bridge_loaded" 这个是加载 WebViewJavaScriptBridge 消息,第一次加载时候原生会收到这个消息.收到这个消息后,原生把...JS 调用原生(以 WKWebView 为例) callHandler => _doSend 设置 iFrame src 属性 WKWebView 代理方法- (void)webView:(WKWebView...,执行injectJavascriptFile方法,把 WebViewJavascriptBridge_JS 里面的代码注入到 WebView 中 如果是客户端注册消息,执行方法WKFlushMessageQueue...先判断是否有 callbackId,如果有就生成一个回调 block,如果没有就直接通过消息里面的 handlerName 拿到本地注册 handlerBlock,执行 block。

1.2K20

iOS·为WKWebView实现夜间模式切换网页背景颜色切换功能

场景需求 单例类ThemeConfig一个BOOL类型属性isNight决定是否夜间模式。 某设置页面,通过按钮事件改变该属性isNight值。...WKWebView网页通过注册并实现KVO方法,监听isNight值变化,以切换网页背景颜色。...,放到事件源方法中去(实现KVO方法监听,或者UIButton添加事件) #pragma mark - KVO - (void)observeValueForKeyPath:(NSString *)keyPath...判断 //采用上述拟解决方案3可实现 } 为初次进来能根据历史设置切换颜色,放到网络加载完成代理方法中,先判断模式,再响应改变颜色。...- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation{ //先判断是否应该切换颜色

3.3K30

使用WKWebView修改user-agentiOS 12踩一个坑

随着摒弃了对iOS老系统支持,项目也开始逐步开始转向WKWebView,本想着新系统应该能填一些WKWebView坑,结果发现还是还是坑不断,这次iOS12又遇到一个神坑。...为了验证下,我WKWebViewdelegate方法webView: didFinishNavigation:里打印customUserAgent和通过js方法获取userAgent,结果发现两者真的是不一样...userAgent方法iOS 12是不生效,猜测原因应该是一旦实例化一个WKWebView并且调用了evaluateJavaScript: 更新其userAgent不生效。...这里需要换一种方式来设置userAgent了。 全局更改的话可以AppDelegate里面把customAgent写到UserDefault里面。...webview.customUserAgent = agent + " customAgent" } } 总结:WKWebView虽然性能比UIWebView更好,但是一些细节处理上,还是需要注意

9.6K50

WKWebView使用

WKWebView使用 前言 最近项目中UIWebView被替换为了WKWebView,因此来总结一下WKWebView使用。...示例Demo:WKWebView使用 本文将从以下几方面介绍WKWebView: 1、WKWebView涉及一些类 2、WKWebView涉及代理方法 3、网页内容加载进度条实现 4、JS...和OC交互 5、本地HTML文件实现 一、WKWebView涉及一些类 WKWebView:网页渲染与展示 注意: #import //初始化...,设置处理接收JS方法代理,代理遵守WKScriptMessageHandler,实现捕捉到JS消息回调方法,详情可以看第一步中对这两个类介绍。...文本编辑偏好设置.png 详情请前往我Github:WKWebView使用 如果我WKWebView使用总结没帮到你,你也可以看看下面几篇文: https://www.jianshu.com/p

2.8K61

iOSWebView——WKWebView

今天就在这里记录一下WKWebView基本使用。 Webview使用,通常包含以下几个部分:浏览器基本设置,浏览器各种回调,浏览器中js如何调用原生方法。...WKWebView设置 WKWebView主要设置项都在configuration成员中(比如是否允许浏览器手指缩放,h5浏览器能否自动播放等)这些都属于浏览器本身设置项。...在此列举几项及其作用,由于类目繁多,会有遗漏,真正需要使用时,可以xcodehelp中寻找,查阅。...拦截url 此方法本质是,js会尝试加载某个URL,客户端加载前拦截这个URL,通过解析这个URL识别它内容,调用相应原生方法,并阻浏览器加载这个URL。...contentController苹果官方提供js调用原生方法类。它使用方法是: ...

3.2K20
领券