js调用ios和安卓方法
安卓:
- window.AndroidWebView.方法名(参数);
- window.AndroidWebView.productDetail(1989);
ios:
- function isbrowser() {
- // 浏览器判断
- return window.browser = {
- versions: function () {
- var u = navigator.userAgent,
- app = navigator.appVersion;
- return { //移动终端浏览器版本信息
- trident: u.indexOf('Trident') > -1, //IE内核
- presto: u.indexOf('Presto') > -1, //opera内核
- webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
- gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
- mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
- ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
- android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
- iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
- iPad: u.indexOf('iPad') > -1, //是否iPad
- webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
- };
- }(),
- language: (navigator.browserLanguage || navigator.language).toLowerCase()
- };
- }
- var productDetail;
- function InitWebViewJavascriptBridge(callback) {
- var ua = window.navigator.userAgent.toLowerCase();
- if (window.AndroidWebView || !isbrowser().versions.ios || ua.match(/MicroMessenger/i) == 'micromessenger') {
- return;
- }
- function _callback(bridge) {
- window.WebViewJavascriptBridge = bridge;
- if (callback) callback(bridge);
- }
- if (window.WebViewJavascriptBridge) {
- _callback(WebViewJavascriptBridge);
- return;
- }
- if (window.WVJBCallbacks) {
- window.WVJBCallbacks.push(_callback);
- return;
- }
- window.WVJBCallbacks = [_callback];
- var WVJBIframe = document.createElement('iframe');
- WVJBIframe.style.display = 'none';
- WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
- document.documentElement.appendChild(WVJBIframe);
- setTimeout(function () {
- document.documentElement.removeChild(WVJBIframe)
- }, 0)
- }
- InitWebViewJavascriptBridge(function (bridge) {
- productDetail = function (id) {
- //注入handlerName为IOSEventClick
- bridge.callHandler('IOSEventClick', {
- code: id,
- type: "productDetail",
- }, function (responseData) {
- // log('IOSEventClick', responseData);
- })
- }
- });