安卓:

  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. jQuery 问题收集

    1.页面动态生成的dom元素,监听事件失效.需用事件代理进行监听. 对于动态绑定元素可以这样写 $(document).on('click', '.xxx', function() { // do s ...

  2. python生成接口自动化测试报告模版

    1:准备html模版 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> &l ...

  3. JSP 获取访问者真正的IP地址

    request.getRemoteAddr(),这种方法在大部分情况下都是有效的,但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了, 如果使用了反向代理软件,用re ...

  4. mac使用相关笔记

    1.软件提示已损坏,需要移到废纸篓的解决方法 -> sudo spctl --master-disable xattr -r -d com.apple.quarantine <path&g ...

  5. 汇编指令MOV

    格式:MOV DST,SRC 例如: MOV EAX,#050aH ;将十六进制050a 传送到通用寄存器eax中 MOV DI,BX(寄存器到寄存器之间传数) MOV ES,AX(通用寄存器与段寄存 ...

  6. 关系型数据库MySQL(一)_增删改查

    1.创建表单 create table product (product_id  char(4)  not null, product_name  varchar(100)  not null, sa ...

  7. PAT甲级【2019年3月考题】——A1159 Structure_of_a_BinaryTree【30】

    Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and i ...

  8. MySQL分表备份

    #!/bin/bash DUMP=/usr/bin/mysqldump MYSQL=/usr/bin/mysql IPADDR=127.0.0.1 PORT=3306 USER=abc PASSWD= ...

  9. 常用命令--find

    语法 find path -option [ -print ] [-exec -ok command ] {} \; find . -maxdepth 1 -type f -exec mv {} /t ...

  10. nginx的原理

    Nginx会按需同时运行多个进程:一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程 (cache loader)和缓存管理器进程(cache manager) ...