安卓:

  1. window.AndroidWebView.方法名(参数);
  1. window.AndroidWebView.productDetail(1989);
ios:
  1. function isbrowser() {
  2. // 浏览器判断
  3. return window.browser = {
  4. versions: function () {
  5. var u = navigator.userAgent,
  6. app = navigator.appVersion;
  7. return { //移动终端浏览器版本信息
  8. trident: u.indexOf('Trident') > -1, //IE内核
  9. presto: u.indexOf('Presto') > -1, //opera内核
  10. webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  11. gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
  12. mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  13. ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  14. android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
  15. iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
  16. iPad: u.indexOf('iPad') > -1, //是否iPad
  17. webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
  18. };
  19. }(),
  20. language: (navigator.browserLanguage || navigator.language).toLowerCase()
  21. };
  22. }
  1. var productDetail;
  1. function InitWebViewJavascriptBridge(callback) {
  2. var ua = window.navigator.userAgent.toLowerCase();
  3. if (window.AndroidWebView || !isbrowser().versions.ios || ua.match(/MicroMessenger/i) == 'micromessenger') {
  4. return;
  5. }
  6. function _callback(bridge) {
  7. window.WebViewJavascriptBridge = bridge;
  8. if (callback) callback(bridge);
  9. }
  10. if (window.WebViewJavascriptBridge) {
  11. _callback(WebViewJavascriptBridge);
  12. return;
  13. }
  14. if (window.WVJBCallbacks) {
  15. window.WVJBCallbacks.push(_callback);
  16. return;
  17. }
  18. window.WVJBCallbacks = [_callback];
  19. var WVJBIframe = document.createElement('iframe');
  20. WVJBIframe.style.display = 'none';
  21. WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
  22. document.documentElement.appendChild(WVJBIframe);
  23. setTimeout(function () {
  24. document.documentElement.removeChild(WVJBIframe)
  25. }, 0)
  26. }
  27. InitWebViewJavascriptBridge(function (bridge) {
  28. productDetail = function (id) {
  29. //注入handlerName为IOSEventClick
  30. bridge.callHandler('IOSEventClick', {
  31. code: id,
  32. type: "productDetail",
  33. }, function (responseData) {
  34. // log('IOSEventClick', responseData);
  35. })
  36. }
  37. });

js调用ios和安卓方法的更多相关文章

  1. JS与IOS、安卓的交互

    最近做的项目中涉及到了与安卓和ios的交互问题,对于一个新手来说,多多少少会有点迷糊.在调用安卓和ios的callback回调时,很轻松的就调用成功了,而且,步骤也不那么繁琐.刚开始,只知道那样使用可 ...

  2. 转载 OS js oc相互调用(JavaScriptCore) ---js调用iOS ---js里面直接调用方法

    OS js oc相互调用(JavaScriptCore)   接着上节我们讲到的iOS调用js 下来我们使用js调用iOS js调用iOS分两种情况 一,js里面直接调用方法 二,js里面通过对象调用 ...

  3. Phonegap 之 iOS银联在线支付(js调用ios端银联支付控件)

    Phonegap项目,做支付的时候,当把网站打包到ios或android端成app后,在app上通过wap调用银联在线存在一个问题: 就是当从银联支付成功后,再从服务器返回到app客户端就很难实现. ...

  4. [iOS]通过JS调用iOS函数时的URL编码问题

    在前面的文章:[iOS]在WebApp中怎样使用JS调用iOS的函数 中,提到了怎样使用JS通过改动URL调用iOS的内部函数. 当中会遇到一个问题,就是编码问题.比方通过URL调用弹窗,在里面写上内 ...

  5. js调用ios的方法

    摘要 在做h5应用的时,有时有些功能js并不能实现的特别完美.比如下载进度条或上传文件进度等.如果能调用ios或者android的方法,实现进度,以及文件上传或者下载列表更好一些.如果使用第三方的js ...

  6. iOS js oc相互调用(JavaScriptCore)---js调用iOS --js里面通过对象调用方法

    下来我们看第二种情况 就是js 中是通过一个对象来调用方法的. 此处稍微复杂一点我们需要使用到 JSExport 凡事添加了JSExport协议的协议,所规定的方法,变量等 就会对js开放,我们可以通 ...

  7. vue.js 调用iOS原生方法,JavaScriptCore

    1. 2. 3. 4.vue.js调用

  8. [转]JS调用Android里面的方法,Android调用JS里面的方法

    FROM : http://blog.csdn.net/hj563308597/article/details/45197709 Android WebView 在公司Android的开发过程中遇到一 ...

  9. 【FLEX教程】#007 如何让JS调用SWF里的方法

    HTML中,JS如何调用SWF里面已经封装好的代码呢? 有一些事情Flex没办法实现的,需要通过调用JS来实现. eg: 当浏览器窗体关闭的时候,弹出一个对话框,提示用户是否退出?或者是否保存当前的操 ...

随机推荐

  1. window 任务管理器

    用的是win10 系统,一般window都差不多. 1.查看进程: 2.查看端口:性能 --> 打开资源资源监视器 --> 网络 --> 侦听端口 3.查看磁盘活动(查看文件被哪个进 ...

  2. [CSP-S模拟测试]:小奇的矩阵(matrix)(DP+数学)

    题目背景 小奇总是在数学课上思考奇怪的问题. 题目描述 给定一个$n\times m$的矩阵,矩阵中的每个元素$a_{i,j}$为正整数.接下来规定:    $1.$合法的路径初始从矩阵左上角出发,每 ...

  3. JS继承 实现方式

    JS中继承方式的实现有多种方法,下面是比较推荐的方法,其它继承方式可做了解: function object(o) { function F() {} F.prototype = o; return ...

  4. python中常犯错误之字符串列表下标问题

    下标用得是中括号[] 不是小括号() 1,python中的小括号( ):代表tuple元组数据类型,元组是一种不可变序列.创建方法很简单,大多时候都是用小括号括起来的. 2.python中的中括号[ ...

  5. 6105 - deauth after EAPOL key exchange sequence

    wifi无法连接公司的网络 Warning Error in Event Log - deauth after EAPOL key exchange sequence https://forums.i ...

  6. js另存为、打印、属性、加入收藏、关闭等代码

    js打开代码 <input name=Button onClick=document.all.WebBrowser.ExecWB(1,1) type=button value=打开> &l ...

  7. HTML- 锚点实例

    <!DOCTYPE HTML> <html> <head> <meta charset='utf-8'> <title>锚点实例</t ...

  8. “希希敬敬对”队软件工程第九次作业-beta冲刺第六次随笔

    “希希敬敬对”队软件工程第九次作业-beta冲刺第六次随笔 队名:  “希希敬敬对” 龙江腾(队长) 201810775001 杨希                   201810812008 何敬 ...

  9. UVA 12446 How Many... in 3D! ( 递推 + 树状数组 )

    C. How Many... in 3D! Time Limit: 1000ms Memory Limit: 131072KB 64-bit integer IO format: %lld      ...

  10. 如何使用 C++ Inja html template 模板

    C++ html template Inja是现代C ++的模板引擎,受到jinja for python的启发.它有一个简单而强大的模板语法,包含所有变量,循环,条件,包含,回调,您需要的注释,嵌套 ...