安卓:

  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. js中的投掷筛子的小游戏

    代码 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...

  2. python中匿名函数lamada函数的使用说明

    匿名函数lambda是指一类无需定义标识符(函数名 )的一类函数式或子程序.lambda函数可以 接受多个任意参数,并且返回单个表达式的值. 它的意义在于即插即用类型,不必定义名字,方便.它需要的返回 ...

  3. linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

    因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...

  4. 关于CSS中的单位px、em、rem

    首先,px.em.rem都是相对单位: px(pixel像素)是相对于显示器屏幕分辨率的,IE无法调整那些使用px作为单位的字体大小: em是相对于当前对象内文本字体的尺寸,如当前对行内文本的字体尺寸 ...

  5. 《图解设计模式》读书笔记6-2 Chain of Responsibility模式

    目录 1. 简介 2. 示例程序 类图 代码 3. 模式的角色和类图 角色 类图 4. 思路拓展 1. 简介 Chain of Responsibility模式是责任链模式,模式的核心就是转移责任.就 ...

  6. MongoDB 3.6 开启慢查询

    参考:Profiling Levels:支持一下级别.0 默认的profiler level,profiler 关闭并且不收集数据.1 profiler 收集超过slowms的操作数据.2 profi ...

  7. 目前写出的bug

    要检测p->next 与p都不=NULL while(p->next!=NULL &&p!=NULL) 会导致访问access NULL pointer的runtime错误 ...

  8. Reciting(second)

      It is subtly revealed in the caricature that a son is expressing his concern about disposing of nu ...

  9. PAT甲级【2019年9月考题】——A1163 PostfixExpression【25】

    7-3 Postfix Expression (25 分) Given a syntax tree (binary), you are supposed to output the correspon ...

  10. Django 上下文管理器的应用

    使用场景:模板继承可以减少页面内容的重复定义,实现页面内容的重用.个人博客右侧的导航栏都是继承base页面从而让代码得到最大程度的复用.但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的 ...