js与ios交互,js示例
js与ios交互,js示例
- js文件:coco3gNativeUser.js
let c3_navtive_user = {}; (function(owner) { owner.temp = {}; //右上角按钮及事件 owner.__defineSetter__(‘right_button_item‘,function(item){ this._right_button_item = item; }); owner.__defineGetter__(‘right_button_item‘,function(item){ return this._right_button_item; }); if (!owner.doActionSync){ owner.doActionSync = function (){ alert("客户端尚未实现该方法"); } } owner.doActionAnsy = function (action,param,callback){ var temp = owner.temp; if(!param){ param = {}; } var callbackTag = "callback_" + (new Date()).getTime(); temp[callbackTag] = callback; param.callbackTag = callbackTag; var path = "http://coco3g-app/" + action + "?"; for ( var p in param ){ path += p + "=" + param[p] + "&"; } window.location.href = path; return callbackTag; } owner.doActionJson = function (action,param,callback){ var temp = owner.temp; var callbackTag = "callback_" + (new Date()).getTime(); temp[callbackTag] = callback; jsondata = {}; jsondata.callback = callbackTag; jsondata.data = param; var path = "http://coco3g-app/" + action + "?" + JSON.stringify(jsondata); window.location.href = path; return callbackTag; } owner.doActionFunc = function (action,param,callback){ var temp = owner.temp; var callbackTag = "callback_" + (new Date()).getTime(); temp[callbackTag] = callback; if(!param){ param = {}; } if("undefined" == typeof CocoObj){ window.webkit.messageHandlers.XJJsToOC.postMessage({protocol :action, data:param, callback:callbackTag}); } else{ var paramstring = JSON.stringify({protocol :action, data:param, callback:callbackTag}); javascript:CocoObj.XJJsToOC(paramstring); } } owner.callback = function (callbackTag,result){ var callbackFun = owner.temp[callbackTag]; // console.log("callback", callbackFun) if (callbackFun){ // console.log("result1",result) callbackFun(result); } // delete owner.temp[callbackTag]; } })(c3_navtive_user); export default { c3_navtive_user }
- 与ios交互自定义方法:index.js文件
import jsTooc from "../commonJS/coco3gNativeUser.js"; window.jsTooc = jsTooc; //关键代码,设置jsTooc为全局变量,外部可访问,这样才能和ios交互 export const get = (url, protocol = {}, competitionCd) => { return new Promise(resolve => { // params.url = ""; // params.callBack = ""; let param = {}; param.url = url; param.protocol = protocol param.competitionCd = competitionCd jsTooc.c3_navtive_user.doActionFunc(‘MPJSHttpServiceWithUrl:andCallBack:‘, param, function(data){ resolve(data); }); }); };
- 文件中使用
1 、触发事件后由ios处理逻辑,
editCustomerAction: function() { // console.log("this.customerInformObj", this.customerInformObj) let protocol = "editCustomerAction:"; let parameter = { customerInformObj: this.customerInformObj //传递给ios的参数, }; jsTooc.c3_navtive_user.doActionFunc(protocol, parameter, function( data ) {}); },
2、 触发事件后由ios给出窗口,显示h5写的静态页面
popUpViewAction (){ let protocol = "XJPopUpViewAction:"; let parameter = { url: "exampleUrl",//写h5静态页面的路径,vue打包后点击dist文件中的index.html(此路径为根目录),在index.html后加该h5静态页面的相对路径,这俩组成的新路径为完整的该h5页面完整路径,例如https://p.tohours.com/bluedeer-h5/2019/20191017_mp3ipad/customer-detail/dist/index.html#/customerAnalysisRule/VIPCustomerRule, title: "关于VIP客户",//ios需要的参数 width: "960",//ios需要的参数 height: "710"//ios需要的参数 }; jsTooc.c3_navtive_user.doActionFunc(protocol, parameter, function( data ) {}); },
相关推荐
阿斌Elements 2020-06-11
88274956 2020-11-03
Zhongmeishijue 2020-09-10
runner 2020-09-01
梦的天空 2020-08-25
IdeaElements 2020-08-19
luvhl 2020-08-17
移动开发与培训 2020-08-16
ReunionIsland 2020-08-16
lyqdanang 2020-08-16
NARUTOLUOLUO 2020-08-03
MyNameIsXiaoLai 2020-07-08
星辰的笔记 2020-07-04
csstpeixun 2020-06-28
letheashura 2020-06-26
liaoxuewu 2020-06-26
OldBowl 2020-06-26
北京老苏 2020-06-25
Luffyying 2020-06-25