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
  ) {});
},

原文地址:https://www.cnblogs.com/sinceForever/p/12162674.html

时间: 2024-10-24 16:14:37

js与ios交互,js示例的相关文章

前端页面js与flash交互——js获取flash对象,并传递参数

背景介绍: 最近在搞一个项目,涉及到图片选取,裁剪,上传等,由于浏览器安全性问题,js无法获取到<input type="file">中选取的文件路径,而且对照片的裁剪,抠图等由HTML5实现的功能,对各大浏览器的兼容性,真是不敢太大胆.这个时候就引进了flash,然后所有js做不了的让flash来做,然后由js来控制页面元素.就这样开始了js与as的交互之旅,听做flash的大叔说,flash调js的函数式很好调的,而js调as不大容易.最终的情况是as调js错误层出不穷

iOS JS 和 OC交互 / JS 和 native 相互调用

现在app 上越来越多需求是通过UIWebView 来展示html 或者 html5的内容, js 和 native OC代码交互 就非常常见了. js 调用 native  OC代码 第一种机制 (1)最常用的是 利用 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationT

Ios开发之 -- js和ios的交互

==WebViewJavascriptBridge的介绍== #下载:https://github.com/marcuswestin/WebViewJavascriptBridge #关于WebViewJavascriptBridge的介绍:http://blog.csdn.net/yanghua_kobe/article/details/8209751 ==WebViewJavascriptBridge(在与现有的业务代码结合使用中)的小问题== *demo部分(  ExampleApp.ht

IOS Webview JS交互之事件拦截获取

最近项目中用到了webvVew,webView加载的网页中有两个按钮,要在app里面响应这两个按钮的点击事件,并接受JS传过来的参数. ios7 的时候,出来了一个新的类库叫JavaScriptCore.framework - (void)setupJsContent { //获取当前JS环境 _content = [_webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; // 打印异

转载 【iOS开发】网页JS与OC交互(JavaScriptCore) OC -----&gt;JS

目标 本文介绍利用苹果在iOS7时发布的JavaScriptCore.framework框架进行js与OC的交互.我们想要达到的目标是: OC调用网页上的js方法 网页js调用APP中的OC方法 JavaSciptCore.framework框架介绍 JavaScriptCore是webkit的一个重要组成部分,主要是对js进行解析和提供执行环境.具体介绍请看这篇简书的文章:JavaScriptCore 使用 准备环境 创建一个名为JS与OC交互Demo的iOS工程.然后在storyboard添

iOS与Html5和JS之间的交互---学习笔记四

首先采用的框架是WebViewJavascriptBridge,采用这套框架可以方便的使iOS与JS交互 一. 流程图(主要介绍思路) 二.iOS端如何使用 首先导入#import "WebViewJavascriptBridge.h"文件 第一步:开启日志 // 开启日志,方便调试 [WebViewJavascriptBridge enableLogging]; 第二步:给ObjC与JS建立桥梁 // 给哪个webview建立JS与OjbC的沟通桥梁 self.bridge = [W

iOS下JS和原生交互,函数互调

现在越来越多的APP都是H5和原生混合开发,这样确实方便快捷,但是H5的部分总避免不了很多与原生的交互,原生调JS函数还比较简单,原生的API函数stringByEvaluatingJavaScriptFromString就可以完成需求,但是JS调原生的函数,系统没有提供API,所以很多人公司都采用标记位的形式完成,我们公司的也不例外,项目开发了很久,原生和JS交互一直是我负责,我们项目这块也要大量的交互操作,随便版本迭代,问题也越来越多,然后就想了很多办法去解决这个问题. 一,我原本的方案,拦

js 与 ios Android交互

一.android 交互 1.js调用webview 在android API Level 17及以上的版本中,就会出现js调用不了android的代码,这是版本兼容的问题,需要在调用的方法上面加一个注解:@JavascriptInterface,这个注解需要导入一个包:import android.webkit.JavascriptInterface; public void onCreate(Bundle savedInstanceState) { //给js设置调用的方法 this.app

iOS 开发之JS与Native交互

最近项目中用到了JS与OC交互的,所以我就来讲一下JS与OC交互的详细过程,以及在做项目的时候遇到的问题,跟大家分享一下. 1:关于交互实现方式的选择. 网上讨论比较多的有一个第三方库WebViewJavascriptBridge,个人不建议用,因为本身我们在做H5交互的时候就是给前端增加了工作量,而这种处理方式就需要前端要配置两套代码,一套给安卓,一套给iOS,而且不利于调试.所以我最后选择用系统的JavaScriptCore框架,JavaScriptzCore内部有五个框架,分别是: #im