HTML5Plus

news2025/2/26 14:51:00

之前写过在 vue 中使用 mui 框架的方法,因为用 vue 开发后打包 5+App 会有一些问题,所以当时用到了,最近又一次开发移动端,不同的是这次使用的是 vue3 开发的,导致之前使用的 vue-awesome-mui 依赖不能使用了,因为作者很长时间没有维护了,vue3 不适用,后来了解到使用 plus 对象不需要 mui 的支持,是本身 html5+的对象,所以记录一下 plus 直接使用的方法

首先说一下,plus 在浏览器中是不起作用的,专门在 5+App 中使用的,主要作用是调用手机原生的一些功能。
以前认为 app 都是 java 写原生开发才是正宗的,挺早之前就用过 5+App 打包 app 应用,但始终觉得是一层覆盖到底层之上的,操作不了底层的功能,最近才终于真实的了解了 5+App。

各种操作方法,方法的说明、参数、回调、示例,可以查看html5plus 官方文档,里面都记录的很详细

值得一提的是plus.runtime.openURL(url, errorCB, identity)方法,这个可以用来唤醒其他的 app,这里的 url 的值可以是 UrlSchemes+“😕/”,UrlSchemes 就是在打包 app 时填写的 App 常用其他设置里的一项 Android 设置

在这里插入图片描述

下面就具体说一下

这里需要监听一下 plusready 事件,在这个成功的回调函数进行一些涉及到 plus 的操作,这个事件看字面意思就可以理解,plus ready就是 plus 准备好了的意思,这里我打印一下 plus 对象,因为打印在浏览器上无效,只能使用 HbuilderX 启动手机模拟器调试,所以需要使用JSON.stringify()格式化成字符串,否则在 HBuilderX 打印出来就是[Object Object]

      document.addEventListener(
        "plusready",
        function () {
          console.log(JSON.stringify(plus));
        },
        false
      );

打印出来的结果,我这里复制转回 JSON 格式的,里面有用的信息还是挺多的,但是这个只显示属性,不像浏览器的打印对象还给显示可操作的方法

{
    "isReady": true,
    "tools": {
        "__UUID__": 1,
        "UNKNOWN": -1,
        "IOS": 0,
        "ANDROID": 1,
        "platform": 1,
        "debug": false
    },
    "bridge": {
        "NO_RESULT": 0,
        "OK": 1,
        "CLASS_NOT_FOUND_EXCEPTION": 2,
        "ILLEGAL_ACCESS_EXCEPTION": 3,
        "INSTANTIATION_EXCEPTION": 4,
        "MALFORMED_URL_EXCEPTION": 5,
        "IO_EXCEPTION": 6,
        "INVALID_ACTION": 7,
        "JSON_EXCEPTION": 8,
        "ERROR": 9,
        "callbacks": {},
        "isInEvalJs": 0
    },
    "obj": {},
    "accelerometer": {},
    "audio": {
        "ROUTE_SPEAKER": 0,
        "ROUTE_EARPIECE": 1
    },
    "barcode": {
        "QR": 0,
        "EAN13": 1,
        "EAN8": 2,
        "AZTEC": 3,
        "DATAMATRIX": 4,
        "UPCA": 5,
        "UPCE": 6,
        "CODABAR": 7,
        "CODE39": 8,
        "CODE93": 9,
        "CODE128": 10,
        "ITF": 11,
        "MAXICODE": 12,
        "PDF417": 13,
        "RSS14": 14,
        "RSSEXPANDED": 15
    },
    "cache": {},
    "camera": {},
    "contacts": {
        "ADDRESSBOOK_PHONE": 0,
        "ADDRESSBOOK_SIM": 1
    },
    "downloader": {
        "__taskList__": []
    },
    "gallery": {
        "__galleryStatus": 0,
        "onPickImageFinished": null
    },
    "geolocation": {
        "lastPosition": null
    },
    "io": {
        "PRIVATE_WWW": 1,
        "PRIVATE_DOC": 2,
        "PUBLIC_DOCUMENTS": 3,
        "PUBLIC_DOWNLOADS": 4
    },
    "maps": {
        "MapType": {
            "MAPTYPE_SATELLITE": "MAPTYPE_SATELLITE",
            "MAPTYPE_NORMAL": "MAPTYPE_NORMAL"
        },
        "SearchPolicy": {
            "TRANSIT_TIME_FIRST": "TRANSIT_TIME_FIRST",
            "TRANSIT_TRANSFER_FIRST": "TRANSIT_TRANSFER_FIRST",
            "TRANSIT_WALK_FIRST": "TRANSIT_WALK_FIRST",
            "TRANSIT_FEE_FIRST": "TRANSIT_FEE_FIRST",
            "DRIVING_TIME_FIRST": "DRIVING_TIME_FIRST",
            "DRIVING_NO_EXPRESSWAY": "DRIVING_NO_EXPRESSWAY",
            "DRIVING_FEE_FIRST": "DRIVING_FEE_FIRST"
        },
        "__bridge__": {
            "callback": []
        }
    },
    "messaging": {
        "TYPE_SMS": 1,
        "TYPE_MMS": 2,
        "TYPE_EMAIL": 3
    },
    "ui": {
        "__nviews__": {}
    },
    "orientation": {},
    "payment": {},
    "push": {},
    "runtime": {
        "arguments": "",
        "version": "13.6.5",
        "innerVersion": "1.9.9.81507",
        "uniVersion": "",
        "launchLoadedTime": "103",
        "launcher": "default",
        "origin": "default",
        "processId": "5981",
        "startupTime": "1670852291370",
        "isRecovery": false,
        "appid": "HBuilder",
        "channel": "",
        "versionCode": 130605
    },
    "share": {},
    "speech": {},
    "statistic": {},
    "storage": {},
    "uploader": {
        "__taskList__": {}
    },
    "widget": {},
    "net": {},
    "zip": {},
    "proximity": {},
    "android": {
        "__Tool": {
            "undefObjectHash": {}
        }
    },
    "ios": {
        "__Tool": {
            "undefObjectHash": {}
        }
    },
    "nativeUI": {},
    "navigator": {
        "__statusBarHeight__": 24
    },
    "key": {},
    "webview": {
        "__JSON_Window_Stack": {}
    },
    "oauth": {},
    "nativeObj": {},
    "stream": {},
    "device": {
        "imei": "358240051111110,358240051111110",
        "imsi": [
            "310260000000000"
        ],
        "model": "Android SDK built for x86_64",
        "vendor": "unknown",
        "uuid": "358240051111110,358240051111110"
    },
    "os": {
        "language": "en-US",
        "version": "7.1.1",
        "name": "Android",
        "vendor": "Google"
    },
    "screen": {
        "resolutionHeight": 640,
        "resolutionWidth": 360,
        "scale": 2,
        "dpiX": 320,
        "dpiY": 320,
        "height": 1280,
        "width": 720
    },
    "display": {
        "resolutionHeight": 640,
        "resolutionWidth": 360
    },
    "networkinfo": {
        "CONNECTION_TYPE": 0,
        "CONNECTION_UNKNOW": 0,
        "CONNECTION_NONE": 1,
        "CONNECTION_ETHERNET": 2,
        "CONNECTION_WIFI": 3,
        "CONNECTION_CELL2G": 4,
        "CONNECTION_CELL3G": 5,
        "CONNECTION_CELL4G": 6,
        "CONNECTION_CELL5G": 7
    },
    "fingerprint": {},
    "video": {},
    "shortvideo": {},
    "bluetooth": {},
    "ibeacon": {},
    "sqlite": {},
    "ad": {},
    "__tag__": "onPageFinished"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/990630.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis原理:IntSet

(笔记总结自b站黑马程序员课程) 一、结构 IntSet是Redis中set集合的一种实现方式,基于整数数组来实现,并且具备长度可变、有序等特征。 结构如下: typedef struct intset {uint32_t encoding; //编码方式uint32_t l…

计算机视觉领域经典模型汇总(2023.09.08

一、RCNN系列 1、RCNN RCNN是用于目标检测的经典方法,其核心思想是将目标检测任务分解为两个主要步骤:候选区域生成和目标分类。 候选区域生成:RCNN的第一步是生成可能包含目标的候选区域,RCNN使用传统的计算机视觉技术&#x…

Matlab 如何选择采样频率和信号长度

Matlab 如何选择采样频率和信号长度 1、概述 在实际信号分析中经常会遇到要分辨出频率间隔为 的两个分量,在这种情形中如何选择采样频率和信号的长度呢? 2、案例分析 设有一个信号由三个正弦信号组成,其频率分别为 ,即&#xf…

流程图 and/or/xor 讲解

and表示后续2个活动同时触发, or表示后续2个活动可触发其中的1个或2个,无排他性,也就是每个活动的触发不影响其他活动; xor表示后续2个活动只触发一个,有排他性,也就是只能触发其中一个。 示例演示“OR”…

网络安全架构:建立安全架构方法的指导框架

01 关键发现 ■ 架构框架使用集体见解来创建最佳实践,指导用户考虑组织风险和业务环境。这些方法的改编和定制,将帮助组织从中获得最佳价值。 ■ 方法论提供了一种系统工程方法,使用业务输入和期望,来创建可重复、可跟踪&#xf…

React16、18 使用 Redux

Redux 核心 Redux 介绍 Redux 是javaScript 状态容器,提供可预测化的状态管理 Redux 工作流程 Actions:对象,描述对状态进行怎样的操作 Reducer:函数,操作状态并返回新的状态 Store:存储状态的容器&am…

【面试】Redis的热key问题如何发现和解决?

文章目录 背景一、怎么发现热key1.1 方法一:凭借业务经验,进行预估哪些是热key1.2 方法二:在客户端进行收集1.3 方法三:在Proxy层做收集1.4 方法四:用redis自带命令1.5 方法五:自己抓包评估 二、如何解决2.1. 利用二级缓存2.2. 备份热key2.3 永不过期2.4 分布式锁 三…

分享5个和安全相关的 VSCode 插件

开发高质量的软件应用程序可能是艰巨的,因为许多组成部分必须协同工作才能创建出一个可运行的解决方案。这就是为什么开发人员需要尽可能获得所有帮助和便利,特别是在保护他们的应用程序时。 Visual Studio Code(VSCode)是最受欢迎…

redis高可用——主从复制、哨兵模式、cluster集群

1、redis群集有三种模式 分别是主从同步/复制、哨兵模式、Cluster,下面会讲解一下三种模式的工作方式,以及如何搭建cIustr群集 主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的…

jenkins创建用户

一.背景 之前用了很多次,现在转到甲方爸爸的岗位,要培养大学毕业生,才发现好记性不如烂笔头。给年轻人写出来。 二.创建用户的过程 1.用户管理界面入口 Dashboard>Manage Jenkins>Jenkins own user database 2.点击右边的按钮“Cre…

Arm 架构 Ubuntu 使用 Docker 安装 Gitlab 并使用

官方 gitlab 文档 我的系统是 arm 架构的 ubuntu 官网没有提供 arm 架构的 docker 的 gitlab 的安装方式,直接安装的也是后来加的,文档也是随笔带过,,,我用到了,记录一下 默认已经安装了 docker 在 docker …

【STM32】常用存储器

常用存储器 RAM 存储器 RAM 是“Random Access Memory”的缩写,被译为随机存储器。所谓“随机存取”,指的是当存储器中的消息被读取或写入时,所需要的时间与这段信息所在的位置无关。而RAM可随读取其内部任意地址的数据,时间都是…

Android 12.0 禁用系统app首次启动动画SplashScreen功能分析

1.前言 在12.0的系统开发中,由于系统增加了新特性,在app首次启动的时候,添加了启动引导动画SplashScreen功能,所以会默认显示 app图标作为一张动画来过度,解决首次启动卡顿问题,接下来分析下看是怎么样添加的,然后禁用就可以了 如图: 2.禁用系统app首次启动动画SplashSc…

关于mybatisplus报错:Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplat的问题

可能是mybatisplus版本不兼容的问题,我之前用的3.4.0,springboot版本是3.1.3,maven版本是3.8.8,运行的时候报了这个错。现在修改了mybatisplus的版本,如下图: 这样就不报错了。 大家可以在这里找合适的my…

DGA行为转变引发了对网络安全的担忧

Akamai的研究人员发现,在域名系统(DNS)流量数据中,动态种子域生成算法(DGA)家族的行为发生了令人担忧的变化。这一发现揭示了恶意行为者如何调整他们的策略来延长他们的指挥与控制(C2)通信通道的寿命,以保护他们的僵尸网络。 从技术角度来看…

Excel文件生成与下载(SpringBoot项目)(easypoi)

说明 通过接口&#xff0c;导出表格。 使用SpringBoot框架和easypoi表格解析框架&#xff0c;生成Excel表格&#xff0c;并通过接口下载。 表格示例 依赖 版本 <easypoi.version>4.4.0</easypoi.version>依赖 <!-- easypoi --> <dependency><…

Matlab图像处理之Lee滤波器

目录 一、前言:二、LEE滤波器2.1 LEE滤波器原理2.2 LEE滤波器实现步骤三、MATLAB代码示例一、前言: LEE滤波器是一种常用于合成孔径雷达(SAR)图像去噪的滤波器。它能增强图像的局部对比度。今天我们将通过MATLAB来实现这种滤波器。 二、LEE滤波器 2.1 LEE滤波器原理 LEE滤…

Linux Debian12将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程&#xff0c;本文不做介绍。 gitee官网&#xff1a;https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git&#xff0c;可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

关于el-date-picker组件修改输入框以及下拉框的样式

因为业务需求&#xff0c;从element plus直接拿过来的组件样式和整体风格不搭&#xff0c;所以要修改样式&#xff0c;直接deep修改根本不生效&#xff0c;最后才发现el-date-picker组件有一个popper-class属性&#xff0c;通过这个属性我们就能够修改下拉框的样式&#xff0c;…

SpringMVC之CRUD(直接让你迅速完成部署)

一、项目创建 首先创建一个基于maven的项目部署&#xff0c;如果有些插件没有的话可以参考mybatis入门Idea搭建 二、配置依赖导入 依赖导入 1、pom.xml 需要根据自己的文件来进行导入&#xff0c;并不是原本照着导入 <project xmlns"http://maven.apache.org/POM/4.0.0…