1.项目中引入 DSBridge.js 文件

var bridge = {
default: this,
call: function(b, a, c) {
var e = "";
"function" == typeof a && (c = a, a = {});
a = {
data: void 0 === a ? null : a
};
if ("function" == typeof c) {
var g = "dscb" + window.dscb++;
window[g] = c;
a._dscbstub = g
}
a = JSON.stringify(a);
if (window._dsbridge) e = _dsbridge.call(b, a);
else if (window._dswk || -1 != navigator.userAgent.indexOf("_dsbridge")) e = prompt("_dsbridge=" + b, a);
return JSON.parse(e || "{}").data
},
register: function(b, a, c) {
c = c ? window._dsaf : window._dsf;
window._dsInit || (window._dsInit = !0, setTimeout(function() {
bridge.call("_dsb.dsinit")
},
0));
"object" == typeof a ? c._obs[b] = a : c[b] = a
},
registerAsyn: function(b, a) {
this.register(b, a, !0)
},
hasNativeMethod: function(b, a) {
return this.call("_dsb.hasNativeMethod", {
name: b,
type: a || "all"
})
},
disableJavascriptDialogBlock: function(b) {
this.call("_dsb.disableJavascriptDialogBlock", {
disable: !1 !== b
})
}
};
! function() {
if (!window._dsf) {
var b = {
_dsf: {
_obs: {}
},
_dsaf: {
_obs: {}
},
dscb: 0,
dsBridge: bridge,
close: function() {
bridge.call("_dsb.closePage")
},
_handleMessageFromNative: function(a) {
var e = JSON.parse(a.data),
b = {
id: a.callbackId,
complete: !0
},
c = this._dsf[a.method],
d = this._dsaf[a.method],
h = function(a, c) {
b.data = a.apply(c, e);
bridge.call("_dsb.returnValue", b)
},
k = function(a, c) {
e.push(function(a, c) {
b.data = a;
b.complete = !1 !== c;
bridge.call("_dsb.returnValue", b)
});
a.apply(c, e)
};
if (c) h(c, this._dsf);
else if (d) k(d, this._dsaf);
else if (c = a.method.split("."), !(2 > c.length)) {
a = c.pop();
var c = c.join("."),
d = this._dsf._obs,
d = d[c] || {},
f = d[a];
f && "function" == typeof f ? h(f, d) : (d = this._dsaf._obs, d = d[c] || {}, (f = d[a]) && "function" == typeof f &&
k(f, d))
}
}
},
a;
for (a in b) window[a] = b[a];
bridge.register("_hasJavascriptMethod", function(a, b) {
b = a.split(".");
if (2 > b.length) return !(!_dsf[b] && !_dsaf[b]);
a = b.pop();
b = b.join(".");
return (b = _dsf._obs[b] || _dsaf._obs[b]) && !!b[a]
})
}
}();

2.引入

import '../../util/DSBridge.js'

3.与原生交互

1.给原生传参数

var obj = {
  data : 'getDiagnosisImg ' ,
  name : ' img '
}
dsBridge.call ( "AddImg" , obj)

js通过dsBridge.call() 方法传值
第一个参数:AddImg是约定注册的名称,与原生接收处方法名一致;
第二个参数是要传递的参数;

2.接收原生传给uni的值

dsBridge.register ( "getDiagnosis Img" , (res) =>{
  console.log (res)
})

第一个参数:getDiagnosisImg 是注册方法名,与原生保持一致;
第二个是js的方法,参数res就是原生返回给uni的值;

uniapp与原生交互的更多相关文章

  1. h5 做app时和原生交互的小常识。

    距离上次随笔或许有半年了吧,最近在用hybrid模式开发移动app,所以就简单的说说用h5技术开发app时候,做原生交互的几个小常识: 一.拨打电话或者发送短信: <a href="t ...

  2. 二 Android Studio 打包EgretApp (开机画面、横竖屏、调试、和原生交互)

    测试环境: Windows7 Egret Engine 5.0.14 Egret support 5.0.12 Android Studio 2.3 目录: 一 修改开机画面 二 横竖屏设置 三 修改 ...

  3. (五)react-native开发系列之Android原生交互

    react-native可以做web与原生的交互,这是使用react-native开发项目的主要目的之一,也是主要优势,用rn而不用原生交互则毫无价值,这篇文章用来记录在项目中rn的原生交互使用过程. ...

  4. 如何应用前端技术唤起app及判断用户来源及与原生交互的原理

    做唤起时需要native端进行配合, h5唤起app这种需求是常见的.在移动为王的时代,h5在app导流上发挥着重要的作用. 目前我们采用的唤起方式是url scheme(iOS,Android平台都 ...

  5. Android 中 js 和 原生交互

    Android中的WebView 中加载的URL 默认是在手机浏览器中加载的,我们可以覆盖这种默认的动作,让网页在WebView中打开.通过设置WebView的WebViewClent 达到这个效果. ...

  6. Flutter和原生交互学习

    PlatformChannel功能简介 PlatformChannel分为BasicMessageChannel.MethodChannel以及EventChannel三种.其各自的主要用途如下: B ...

  7. js与android原生交互

    package com.liuhao.mysecond; import androidx.annotation.RequiresApi;import androidx.appcompat.app.Ap ...

  8. web与原生交互+活动

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. RN开发-Android原生交互

    在使用RN开发过程中,难免有些原生功能需要要自己来实现,下面总结一下在使用RN与原生开发交互. 1.在原生代码中定义实现类 1.1  首先继承 ReactContextBaseJaveModule抽象 ...

  10. React Native知识12-与原生交互

    一:原生传递参数给React Native 1:原生给React Native传参 原生给JS传数据,主要依靠属性. 通过initialProperties,这个RCTRootView的初始化函数的参 ...

随机推荐

  1. 0x06_自制操作系统My-OS,IDT,GDT,PIC初始化,实现键盘中断

    把class03改成class04 IDT,GDT,PIC 我来介绍什么是IDT和GDT,PIC,怎么实现键盘中断 GDT全局描述表在16位CPU用不到,到了32位CPU要用. 16位CPU实模式用基 ...

  2. Redux Toolkit 的使用方法

    Redux Toolkit 是什么? Redux Toolkit 是 Redux 官方强烈推荐,开箱即用的一个高效的 Redux 开发工具集.它旨在成为标准的 Redux 逻辑开发模式,我们强烈建议你 ...

  3. MySQL视图、存储过程、函数、触发器、定时任务、流程控制总结

    视图的增删改查 视图相当于一张只能读的表,不可以修改.当组成视图的表发生数据变化的时候,视图会相对应的进行改变. 存储过程的练习 创建存储过程: create [if not exists] proc ...

  4. sql查询多个结果字段通过逗号分隔为同一行显示、sql查询结果有符号分隔的字段拆分多行显示

    一.sql查询多个结果通过逗号分隔为同一行显示 sql查询数据结果 select e.ctrl_desc from t_ctrl_entry e inner join CodeGroupKeyCode ...

  5. QT个人笔记

    1.QT的setCursor(Qt::CrossCursor) 干什么用 ui->View->setCursor(Qt::CrossCursor); setCursor函数用于设置窗口上的 ...

  6. CMT: Convolutional Neural Networks Meet Vision Transformers概述

    0.前言 相关资料: arxiv github 论文解读(CSDN,CSDN) 论文基本信息: 作者单位:华为诺亚, 悉尼大学 发表时间:CVPR2022(2021.7.13) 1.针对的问题 当前将 ...

  7. org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active解决办法

    解决办法 在配置elasticsearch.yml中加上 ingest.geoip.downloader.enabled: false

  8. C# DevExpress GridControl中BandedGridView表格使用

    1.设计器方式创建 1.点击"Change view">>然后在选中"Convert to"选项>>最后选中点击"Banded ...

  9. 网络储存服务ip-san搭建

    简单的介绍一下SAN(存储区域网络存储区域网络和SAN协议,简称SAN),它是一种高速网络实现计算机与存储系统之间的数据传输.常见的分类是FC-SAN和IP-SAN两种.FC-SAN通过光纤通道协议转 ...

  10. js正则匹配多行文本

    原文:https://lwebapp.com/zh/post/regular-expression-to-match-multiple-lines-of-text 需求 最近有小伙伴提了个需求,想用正 ...