安卓:

  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. Map-Amap:货运解决方案

    ylbtech-Map-Amap:货运解决方案 1.返回顶部 1. http://lbs.amap.com/smart/truck/ 2. 2.返回顶部 1. 2. 3.返回顶部   4.返回顶部   ...

  2. drf基础

    1.什么是编程? 数据结构和算法的结合 2.什么是REST? 同一个功能会产生五花八门的url(把查看单条记录和查看多条记录都看成是一个功能),而且响应回去的数据也没有同一的格式规范,这就造成了前后端 ...

  3. note《JavaScript 秘密花园》

    点我跳转 (一)JavaScript-Garden-Object (二)JavaScript-Garden-Function (三)JavaScript-Garden-Array (四)JavaScr ...

  4. vue项目中实现手势密码

    思路: 本来应该全部都用canvas来实现的,但时间紧迫 写的时候只想着圆圈用li写,线用canvas,写到一半才想通,还好这一通下来比较顺利 第一步:页面中的9个点用v-for循环出来li,ul设置 ...

  5. nginx 设置http访问ftp目录内文件

    设置 nginx “403 Forbidden” 错误的原因及解决办法 原文链接 https://www.cnblogs.com/chenzc/p/4461130.html nginx 的 403 F ...

  6. 实验报告(七)&第九周课程总结

    班级 计科二班 学号 20188425 姓名 IM 完成时间2019/10/24 评分等级 实验任务详情: 完成火车站售票程序的模拟. 要求: (1)总票数1000张: (2)10个窗口同时开始卖票: ...

  7. Cocos2d-x之定时器

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 每一个游戏程序都有一个循环在不断运行,它是由导演对象来管理与维护.如果需要场景中的精灵运动起来,可以在游戏循环中使用定时器对精灵等对象进行 ...

  8. Springboot系列1_什么是Springboot

    Springboot系列1_什么是Springboot */--> code {color: #FF0000} pre.src {background-color: #002b36; color ...

  9. macos系统安装nginx

    MacOS系统安装软件: macos系统下没有yum和apt-get命令,要安装软件需要使用homebrew. 1.安装homebrew: 安装:/usr/bin/ruby -e "$(cu ...

  10. MD相关语法

    原文链接:https://www.jianshu.com/p/96ecaa2cc989 标题 一个#表示一级标题,最多6个表示6级标题 h1 h2 h3 h4 h5 h6 列表 无序列表,用 * + ...