iOS 如何监听js 按钮的onclick事件

iOS 如何监听js 按钮的onclick事件

阅读 13.7k
3 个回答

转一下自觉的答案先

JS 和 iOS 互调是个很经典的问题,我们先来看下不借助外部框架怎么搞的

不借助外部框架【WebView】

iOS 调用 JS

[webView stringByEvaluatingJavaScriptFromString:@"alert('boom shaka laka')"];

非常的 easy

JS 调用 iOS,我比较推崇的是调用一个 url,然后自己定义解析规则的方式。
我举个?吧,下面是一段 html 代码,


用户在你的 WebView 上面点了这样一个连接,这个时候会调起

(BOOL)webView:(UIWebView )webView shouldStartLoadWithRequest:(NSURLRequest )request navigationType:(UIWebViewNavigationType)navigationType
这个时候你解析下 request.URL 做下判断就ok了。。

不借助外部框架 【WKWebView】

WKWebView 性能更屌,内存更少,但是缓存之类的设置非常的忧伤。。。Cookie 更是诡异

WKWebView 的坑看这里
https://github.com/ShingoFukuyama/WKWebViewTips/blob/master/README.md

iOS 调用 JS

一样很 easy,这样调用就好了

evaluateJavaScript:script completionHandler:^(id result, NSError *error)
JS 调用 iOS

一样的。。找到 url 处理

(void)webView:(WKWebView )webView decidePolicyForNavigationAction:(WKNavigationAction )navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
可以用的轮子

WebViewJavascriptBridge
https://github.com/marcuswestin/

= =其实我不太喜欢这个轮子。。。用起来太绕了

JSPatch
https://github.com/bang590/JSPatch
这个好像跟问题没有关系。。不过请关注。。神器。

Hybrid App 的坑其实也不多。

--------------如何监听----

假如 onclick 调用的方法叫 test()
在test里面补充一下代码

if(/iphone|ipad/i.test(navigator.userAgent)){
    location.href = "your_app://clicked"
}

再配合上面的方法,就成功调用了

新手上路,请多包涵

楼主搞定了么,我现在也遇到这个问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏