安卓:

  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. 【靶场练习_sqli-labs】SQLi-LABS Page-1(Basic Challenges)

    GET篇 Less-1:  1.用order by得出待查表里有三个字段 http://192.168.40.165/sqli-labs-master/Less-1/?id=1' order by 3 ...

  2. c++文件拷贝

    #include<fstream>void Copyfile( char* FileSource, char* FileItem ){fstream fsCopee( FileSource ...

  3. spark sql correlated scalar subqueries must be aggregated 错误解决

    最近在客户中使用spark sql 做一些表报处理,但是在做数据关联时,老是遇到 “correlated scalar subqueries must be aggregated” 错误 举一个例子, ...

  4. Gson字符串转换对象数组

    public class Input { private String title; private int formId; private String content; public String ...

  5. linux to extract contents between patterns

    参考:http://stackoverflow.com/questions/19177721/extract-lines-between-two-patterns-from-a-lfile awk ' ...

  6. 使用matplotlib画出log的图像

    以下内容是学习笔记,若有侵权,立即删除! import math import matplotlib.pyplot as plt import numpy as np if __name__ == ' ...

  7. 2.Jmeter 如何在jsr223 脚本中停止测试任务

    Jmeter 如何在jsr223 脚本中停止测试任务 在可以直接引用ctx的变量的processor中可以执行如下脚本即可. (例如jsr223 postprocessor中) ctx.getEngi ...

  8. 构建一个简单的Spring Boot项目

    11 构建一个简单的Spring Boot项目 这个章节描述如何通过Spring Boot构建一个"Hello Word"web应用,侧重介绍Spring Boot的一些重要功能. ...

  9. python基础----斐波那契数列

    python实现斐波那契数列的三种方法 """ 斐波那契数列 0,1,1,2,3,5,8,13,21,... """ # 方法一:while ...

  10. Web前端基础学习-2

    盒子模型 在页面中,我们将所有的元素全部看做是一个盒子,页面布局就是将大大小小不同的盒子堆砌在一起,而一个盒子由以下几部分组成: padding:内边距,内容到边框的距离: margin:外边距,其他 ...