app内嵌H5页面 上传图片,调用app的方法和注册回调
html
<!-- app的展示唤起app的相机 --><span class="file-inp" @click.stop="changeImageApp" ></span>
js
import { InitBridge, setupWebViewJavascriptBridge } from "@/utils/common";mounted() {//注册上传事件window.AppUpLoadFile = this.AppUpLoadFile;if (isAndroid) {} else {setupWebViewJavascriptBridge((bridge) => {bridge.registerHandler("AppUpLoadFile", this.AppUpLoadFile);});}
}// 手机app部分上传图片changeImageApp() {console.log('app方法调用')if (isAndroid) {InitBridge((bridge) => {bridge.uploadImageMethod(3);});} else {setupWebViewJavascriptBridge((bridge) => {bridge.callHandler("uploadNativeImageMethod", { type: 3, count: 1 }, () => {});});}},//app上传图片糊回调AppUpLoadFile(str) {// alert(str);this.imgIsLoading = true;const index = str.indexOf(",");const progress =str.substring(0, index);const path = str.substring(index + 1, str.length);// alert(path + "图片地址");//上传前if (progress == "beforeupload") {//console.log('beforeupload');}//上传中else if (progress == "uploading") {//console.log('uploading');}//上传成功else if (progress == "success") {this.imageUrls.push(path);this.imgIsLoading = false;}//上传出错else if (progress == "error") {this.imgIsLoading = false;Toast("上传失败,请重试");}},
common.js
// 与app交互
export const InitBridge = function (callback) {try {if (getAppType() === 'ios') {// 建立IOS桥接var onBridgeReady = function (bridge) {if (callback) {callback(bridge);}}if (window.WebViewJavascriptBridge) {onBridgeReady(WebViewJavascriptBridge);} else {if (document.addEventListener) {document.addEventListener('WebViewJavascriptBridgeReady', function () {onBridgeReady(WebViewJavascriptBridge);}, false);} else {document.attachEvent('onWebViewJavascriptBridgeReady', function () {onBridgeReady(WebViewJavascriptBridge);});}}} else {// bridge = manjdSales;if (callback) {callback(manjdSales);}}} catch (e) { };
};export const setupWebViewJavascriptBridge = function (callback) {// 使用navigator.userAgent.toLowerCase()判断登陆端是pc还是手机let ua = window.navigator.userAgent.toLowerCase();// console.log(ua)let vs = ua.match(/iOS-\d*/);// console.log(vs)let vn = nullif(vs){vn = vs.split('-')[1]}if (vn < 163) {InitBridge() }// console.log(window.WebViewJavascriptBridge)if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }window.WVJBCallbacks = [callback];var WVJBIframe = document.createElement('iframe');WVJBIframe.style.display = 'none';WVJBIframe.src = 'https://__bridge_loaded__';document.documentElement.appendChild(WVJBIframe);setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)
}
app内嵌H5页面 上传图片,调用app的方法和注册回调相关推荐
- 关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?
关于app内嵌h5页面调用百度地图定位问题,为什么定位不准呢?以下为代码. 百度地图:里面有3种定位方式(a:浏览器定位,b:IP定位,c:定位SDK辅助定位),我选择第3种,是需要app那块添加些什 ...
- app内嵌h5页面在ios手机端滑动卡顿的解决方法
app内嵌h5页面在ios手机端滑动卡顿的解决方法 参考文章: (1)app内嵌h5页面在ios手机端滑动卡顿的解决方法 (2)https://www.cnblogs.com/1rookie/p/11 ...
- 记录:app内嵌H5页面分享到微信后,在安卓手机打开白屏,苹果手机正常渲染的问题始末
**背景:**app内嵌的一个个人名片页面需要分享到微信,测试环境下,分享到微信后,安卓和苹果手机都能正常渲染,生产环境苹果手机没问题,安卓手机打开分享的链接,页面一直空白. **原因分析:**单独加 ...
- android app内嵌h5页面,app内嵌h5页面:前端与原生语言的配合
判断操作系统: var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf('Android' ...
- 云闪付APP内嵌H5监听左上角X关闭事件
最近在做云闪付蓝牙对接,遇到的一个问题. 需求 用户进入云闪付APP内嵌 H5页面调用接口连上蓝牙后,可能不想支付使用,或其他原因,随手关闭左上角X关闭浏览器,这时需要监听这个动作,断开蓝牙连接,不然 ...
- H5 -- (功能)App内嵌h5网页实现芝麻认证的接入
1.需求:由于高贵的IOS提审时不能出现支付宝相关字眼及相关SDK,所以我们app芝麻认证只有通过内嵌H5页面实现 2.分析:通过调研 "芝麻认证"官方技术文档 ,接入芝麻认证的流 ...
- H5-- (功能)App内嵌h5网页实现芝麻认证的接入
1.需求:由于高贵的IOS提审时不能出现支付宝相关字眼及相关SDK,所以我们app芝麻认证只有通过内嵌H5页面实现 2.分析:通过调研 "芝麻认证"官方技术文档 ,接入芝麻认证的流 ...
- 微信内嵌h5页面调用拍照和相册功能?
有一个问题: 在微信内嵌h5页面中通过input调用摄像头,ios既可以调用摄像头也可以选择相册,但android只能选择相册,按照网上的兼容性(就是根据capture属性的有无)做了处理后,依然不行 ...
- 【Appium】测试时遇到手机内嵌H5页面的切换问题
前言:H5页面简单理解就是在手机内嵌套了一些网页格式的信息,可以让手机的应用看起来更丰富一些. 而当手机内嵌H5页面时,常规的app定位方法就没法使用了,我们需要先切换到H5页面才能进行下一步的定位, ...
最新文章
- ubuntu改变@后面的主机名
- 2019-04-12 cookie基础
- 差分隐私 python_主要开发语言为 Python/Rust:微软与哈佛大学合作开源差分隐私平台...
- IOS 学习笔记 2015-04-15 手势密码(原)
- linux 配置root环境变量,root用户Linux 环境变量的配置解决(-bash: jps: command not found)有关问题...
- java web-inf_对JavaWeb项目中WEB-INF目录的理解
- Error:java: Compilation failed: internal java compiler error or source 1.5 提升版本
- 10分钟快速配置LAMP环境
- 学生用计算机如何clean,windows installer clean up,教您电脑如何使用清理实用工具
- Codeforces 437D The Child and Zoo(贪心+并查集)
- Win10/Win11:恢复Win7照片查看器
- hprose-php教程,PHP RPC框架 hprose 上手玩玩
- 数据分析师岗位 分析可视化
- ABAP SPLITTER技术总结及使用技巧
- 2019 Python接口自动化测试框架实战开发(一)
- vue $confirm 自定义图标及修改图标颜色
- Excel也可以播放MV
- 利用python进行数据分析学习笔记
- 企业招聘网络推广运营人员的岗位工作职责该如何写?
- 常见的网站攻击方式和防护方式
热门文章
- ​男子用ChatGPT编假新闻被采取刑事强制措施;苹果M3芯片下半年量产;Safari超Edge,成第二大桌面浏览器|极客头条...
- 前端开发需要什么技术?
- 解决Bug:关于折叠屏手机(Android)出现fragment重叠问题
- mysql C语言连接
- electron-vue初始化项目到打包运行
- 关于gis坐标中的ZM
- 小学计算机基础知识汇总,小学计算机基础知识
- 微信自带浏览器被输入法阻挡文本框的 jQuery 解决方法 by FungLeo
- 选择武大国重,我后悔过吗?
- FDTD仿真发散(个人理解翻译)