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

小白必看,JSBridge 初探

JS 通过这个对象或方法进行调用时,执行对应的逻辑操作,可以直接调用 Native 的方法。使用该方式,JS 需要等到 Native 执行完对应的逻辑后才能进行回调里面的操作。...Android 主要有两种方式实现。 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...相关代码如下: webView.loadUrl("javascript:" + javaScriptString); webView.evaluateJavascript(javaScriptString...WKWebview 可以通过 evaluateJavaScript:javaScriptString 来实现,支持 iOS 8.0 及以上系统。...= nil) // javaScriptString 需要调用的 JS 代码 // completionHandler 执行后的回调 // objective-c [jsContext evaluateJavaScript

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

JSBridge 原理

alert、confirm、prompt 等方法做了拦截,如果通过此方式进行 Native 与 JS 交互,需要实现 WKWebView 的三个 WKUIDelegate 代理方法。...JS 通过这个对象或方法进行调用时,执行对应的逻辑操作,可以直接调用 Native 的方法。使用该方式,JS 需要等到 Native 执行完对应的逻辑后才能进行回调里面的操作。...Android 主要有两种方式实现。 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...WKWebview 可以通过 evaluateJavaScript:javaScriptString 来实现,支持 iOS 8.0 及以上系统。...= nil) // javaScriptString 需要调用的 JS 代码 // completionHandler 执行后的回调 // objective-c [jsContext evaluateJavaScript

2.1K40

小白必看,JSBridge 初探

JS 通过这个对象或方法进行调用时,执行对应的逻辑操作,可以直接调用 Native 的方法。使用该方式,JS 需要等到 Native 执行完对应的逻辑后才能进行回调里面的操作。...Android 主要有两种方式实现。 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...相关代码如下: webView.loadUrl("javascript:" + javaScriptString); webView.evaluateJavascript(javaScriptString...WKWebview 可以通过 evaluateJavaScript:javaScriptString 来实现,支持 iOS 8.0 及以上系统。...= nil) // javaScriptString 需要调用的 JS 代码 // completionHandler 执行后的回调 // objective-c [jsContext evaluateJavaScript

1.4K10

iOS开发WKWebView与JS的交互

span id="jsParamFuncSpan"style="color: red; font-size: 50px;"> <script type="text/<em>javascript</em>...<em>在</em>点击前三个按钮的时候会调用方法: // 警告框 - (void)webView:(<em>WKWebView</em> *)webView runJavaScriptAlertPanelWithMessage:(NSString...注意:<em>在</em>利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码<em>中</em>的方法名,而我们<em>在</em>使用<em>WKWebView</em>的时候就不用了。...客户端<em>中</em>需增加的代码: // 注入JS对象名称AppModel,当JS通过AppModel来调用时, // 我们可以<em>在</em>WKScriptMessageHandler代理<em>中</em>接收到  [config.userContentControlleraddScriptMessageHandler...message.nameisEqualToString:@"AppModel"]) {   // 打开外部链接 NSLog(@"找到了注入的JS对象...");     } } OC调用JS代码: [self.webView evaluateJavaScript

2.2K20

iOSWKWebView交互使用总结

然后是WKWebView的基本设置, self.webView.scrollView.bounces = NO; self.webView.navigationDelegate = self; 设置了取消弹性和代理...didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error //请求之前,决定是否要跳转:用户点击网页上的链接,需要打开新页面,...限制用户选择以及长按操作 ---- 有时候,我们会遇到一个比较头疼的问题,我们不想让用户长按选择或者有弹窗,那么这时我们需要添加两行代码来禁止这一系列行为。...//WKWebview 禁止长按(超链接、图片、文本...)弹出效果 [self.webView evaluateJavaScript:@"document.documentElement.style.webkitTouchCallout...重点:JS交互 ---- WKWebView的交互方法和之前的UIWebView其实本质上没有什么太大的差别,都是通过发送方法名找到对应的方法执行对应的操作。

2.8K40

MessageHandler 高级用法一:封装MessageHandler

iOS JS 和原生APP交互有许多种方法 WebViewJavascriptBridge 是我用的比较多的一个库,但是 WebViewJavascriptBridge 使用时最大的一个缺点就是...内部的处理类 这就造成了原始的调用方法有一定的影响 WKWebView iOS 8 之后,无疑没有理由不使用 WKWebView JS 端只需要 window.webkit.messageHandler...WKScriptMessageHandler, name:String) 并且实现协议方法即可 APP 端只需要 evaluateJavaScript 既可以调用 JS 方法 通过上面三种方法便可以实现大多数的...data block 进行持有,从而可以实现异步回调 所以 WKScriptMessageHandler 协议方法执行的时候,根据name 取出来对应的block进行回调 import UIKit...evaluateJavaScript(javascript, completionHandler: result) } /// inject javascript code

2.6K40

技术 | Hybrid载体的变化(一)

,我对于他的理解,苹果在iOS8推出的新框架“Webkit”,其中WKWebView就是用来替换原来的UIWebView,一句话,你用它原来UIWebView出现的各种问题都被解决了。...如下都简称WK 正常情况下,我们做Hybrid容器基本会用到WKWebView几乎全部的特性,但是也有三个其中重中之重的地方,那就是JavaScript的交互与网页应用的性能监控。...初始化WKWebView你还需要配置一个Conf,这个Conf你可以添加一个属性,这个属性JavaScript这一边你可以通过window.webkit.messageHandlers.icepyApp...= WKWebView(frame: self.view.frame, configuration: config) 最终当你需要向Native发送消息就需要使用这个属性并调用其postMessage...你身边如果有朋友混合领域(跨技术栈)或全栈,编程感悟感兴趣,可以转发给他们看哦,^_^先谢过啦。----

83730

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

随着摒弃了iOS老系统的支持,项目也开始逐步开始转向WKWebView,本想着新系统应该能填一些WKWebView的坑,结果发现还是还是坑不断,这次iOS12又遇到一个神坑。...iOS 10/11上面,这段代码执行都好好的,并且也没什么问题。结果现在在iOS 12beta版本里面突然不生效了,自己追加的userAgent没有添加成功。...为了验证下,我WKWebView的delegate方法webView: didFinishNavigation:里打印customUserAgent和通过js方法获取的userAgent,结果发现两者真的是不一样的...12是不生效的,猜测原因应该是一旦实例化一个WKWebView并且调用了evaluateJavaScript: 更新其userAgent不生效。...webview.customUserAgent = agent + " customAgent" } } 总结:WKWebView虽然性能比UIWebView更好,但是一些细节处理上,还是需要注意的

9.5K50

App与WebView交互方式

通过执行函数evaluateJavaScript:completionHandler:,我们可以传递app端的数据给webview,并触发html脚本函数的调用,从而响应app的行为。...html的脚本添加iframe对象,通过设置iframe的src属性,可成功触发WKWebview的代理方法调用。..., 我们可以代理方法拦截请求,首先iframe的src的值也就是我们自定义的scheme,通过该scheme的判断来得知我们想干什么,从而去调用app对应的函数。...除了可以自定义scheme传递我们需要的参数外,我们可以html的脚本把数据储存好,通过evaluateJavaScript:completionHandler:来调用脚本函数来返回需要的参数...具体如何通过WKWebview传递过来的数据来判断该执行哪个函数,有一种实现方式: 用一个字典来储存对应函数地址,这样我们可以通过传递过来的key来获得对应的函数。

1.4K20

iOS下JS与OC互相调用(四)--JavaScriptCore

JavaScriptCore.h ** 1.1 JSVirtualMachine ** JSVirtualMachine看名字直译是JS 虚拟机,也就是说JavaScript一个虚拟的环境执行,...它通过加锁虚拟机,保证JSVirtualMachine是线程安全的,如果要并发执行JavaScript,那我们必须创建多个独立的JSVirtualMachine实例,不同的实例执行JavaScript...** 1.2 JSContext ** JSContext是为JavaScript执行提供运行环境,所有的JavaScript执行都必须在JSContext环境。...JSValue包含了每一个JavaScript类型的值,通过JSValue可以将Objective-C的类型转换为JavaScript的类型,也可以将JavaScript的类型转换为Objective-C...3.避免循环引用,因为block 会持有外部变量,而JSContext也会强引用它所有的变量,因此block调用self,要用__weak 转一下。

2.8K10

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

开发iOS版的直播卖货系统源码过程,如何在html上展示商品详情,下面小编将从WKWebView入手,来介绍下实现过程。...加载完成的代理方法更改webView的frame - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified...addObject:str]; } }];  } imageArray = [NSMutableArray arrayWithArray:arrImgURL]; return arrImgURL; } 4、WKWebView...的代理方法拦截图片添加的点击方法,可使用HZPhotoBrowser来展示图片 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...:%@",navigationAction.request.URL.absoluteString); 以上,就是开发直播卖货系统源码,利用WKWebView展示html格式的商品详情的过程。

1.1K30

WKWebView 那些坑

1.2、检测webView.title是否为空 并不是所有页面白屏的时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗的H5页面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...3、WKWebView NSURLProtocol问题 WKWebView独立于app进程之外的进程执行网络请求,请求数据不经过主进程,因此,WKWebView上直接使用NSURLProtocol...独立进程里执行网络请求。...另一个crash发生在WKWebView退出前调用 -[WKWebView evaluateJavaScript:completionHandler:] 执行JS代码的情况下。...WKWebView退出并被释放后导致completionHandler变成野指针,而此时javaScript Core还在执行JS代码,待javaScript Core执行完毕后会执行completionHandler

17K21

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券