H5+ 常用API

本文详细介绍H5+移动端开发的基础知识,包括扩展API加载、设备信息获取、屏幕管理等功能,以及如何使用nativeUI实现系统级交互,如弹窗、提示、等待对话框等。

写在前面

H5+ 所有功能都只能在 plusReady 事件加载完成后调用

            mui.plusReady(function() { // 扩展API加载完成事件
                var self = plus.webview.currentWebview();
                mui.alert(self);
            });

获取设备信息

//              mui.alert("设备的国际移动设备身份码 " + plus.device.imei);
//              mui.alert("设备的国际移动用户识别码  " + plus.device.imsi);
//              mui.alert("设备的型号  " + plus.device.model);
//              mui.alert("设备的唯一标识    " + plus.device.uuid);

addEventListener 添加事件监听函数

                    // void document.addEventListener( event, callback, capture );
    //              参数:
    //              event: ( DOMString ) 必选 要添加监听的事件类型,可取下面面列出的所有事件常量
    //              callback: ( EventTrigCallback ) 必选 扩展API加载完毕触发的回调函数
    //              capture: ( Boolean ) 可选 事件流捕获顺序,可忽略

    //              事件常量
    //              "plusready": 扩展API加载完成事件
    //              "pause": 运行环境从前台切换到后台事件
    //              "resume": 运行环境从后台切换到前台事件
    //              "netchange": 设备网络状态变化事件
    //              "newintent": 新意图事件
    //              "plusscrollbottom": 窗口滚动到底部事件
    //              "error": 页面加载错误事件

//                  mui.plusReady(function(){
//                      document.addEventListener('pause',function(){
//                          mui.toast('app 在后端运行');
//                      },false)
//                      document.addEventListener('resume',function(){
//                              mui.toast('app 在前端端运行');
//                      ,false)
//                  });




                    // 原生dom事件

                    // 1、利用dom元素的 onclick="" 属性
                    //HTML代码  <input type="button" id="btn" value="test" onclick="test();"></input>
                    //js代码      function test(){alert(1);

                    // 2、获取dom对象,从写dom元素的 onclick 方法
                    //HTML代码  <input type="button" id="btn" value="test"></input>
                    //js代码      
//                  document.addEventListener('plusready', function(){
//                      var btn = document.getElementById('btn');
//                      btn.onclick = function(){alert(1);}
//                  });

                    // 3、a 元素的href属性
                    //HTML代码  <a href="javascript:test();">test</a>
                    //js代码   function test(){alert(1);}

屏幕亮度

                // 获取屏幕亮度   0 - 1之间的数值
                // plus.screen.getBrightness();
                // 设置屏幕亮度
                // plus.screen.setBrightness( 0.5 );

保持屏幕唤醒

                //  plus.device.setWakelock( lock );
                // 参数:
                // lock: ( Boolean ) 必选 是否设置程序一直保持唤醒状态
                // 可取值true或false,true表示设定程序一直保持唤醒状态,false表示关闭程序一直保持唤醒状态。程序退出后将恢复默认状态,默认为关闭程序保持唤醒状态。 
//               plus.device.setWakelock(true);

                // isWakelock 获取程序是否一直保持唤醒(屏幕常亮)状态
//              if(plus.device.isWakelock()){
//                  mui.toast('屏幕一直保持唤醒');
//              }else{
//                  mui.toast('屏幕一定时间不操作会锁屏哦');
//              }

屏幕方向

                // 锁定屏幕方向
//              void plus.screen.lockOrientation("landscape-primary");
                    //参数
//                  orientation: ( String ) 必选 要锁定的屏幕方向值
//                  锁定屏幕方向可取以下值: 
//                  "portrait-primary": 竖屏正方向; 
//                  "portrait-secondary": 竖屏反方向,屏幕正方向按顺时针旋转180°; 
//                  "landscape-primary": 横屏正方向,屏幕正方向按顺时针旋转90°; 
//                  "landscape-secondary": 横屏方向,屏幕正方向按顺时针旋转270°; 
//                  "portrait": 竖屏正方向或反方向,根据设备重力感应器自动调整;
//                  "landscape": 横屏正方向或反方向,根据设备重力感应器自动调整;
                // 解除锁定屏幕方向
//              void plus.screen.unlockOrientation();

获取设备信息


//              mui.alert("设备的国际移动设备身份码 " + plus.device.imei);
//              mui.alert("设备的国际移动用户识别码  " + plus.device.imsi);
//              mui.alert("设备的型号  " + plus.device.model);
//              mui.alert("设备的唯一标识    " + plus.device.uuid);

OS 底层系统信息:


//              mui.alert("系统语言信息  " + plus.os.language);
//              mui.alert("系统版本信息   " + plus.os.version);
//              mui.alert("系统的名称  " + plus.os.version);
//              mui.alert("系统的供应商信息    " + plus.os.vendor);

Screen模块管理设备屏幕信息:

                // 1. resolutionHeight: 设备屏幕高度分辨率
                // 设备屏幕区域包括系统状态栏显示区域和应用显示区域,screen获取的是设备屏幕总区域的逻辑分辨率,单位为px。 如果需要获取实际分辨率则需要乘以比例值scale。
//              mui.alert("Screen height: " + (plus.screen.resolutionHeight * plus.screen.scale) + "px" );
                // 2. resolutionWidth: 设备屏幕宽度分辨率
                // 设备屏幕区域包括系统状态栏显示区域和应用显示区域,screen获取的是设备屏幕总区域的分辨率,单位为px。 如果需要获取实际分辨率则需要乘以比例值scale。
//              mui.alert( "Screen width: " + (plus.screen.resolutionWidth * plus.screen.scale) + "px" );
                // 3. scale: 逻辑分辨率与实际分辨率的比例
//              mui.alert("逻辑分辨率与实际分辨率的比例 "+ plus.screen.scale);

                // Display模块管理应用可使用的显示区域信息:
                // 应用可使用的屏幕高度逻辑分辨率  plus.display.resolutionHeight;
                // 应用可使用的屏幕宽度逻辑分辨率  plus.display.resolutionWidth;

拨打电话

                // plus.device.dial(number, true);
                // 参数一(String)——必选 ,要拨打的电话号码   参数二(Boolean )——可选,是否需要用户确认后开始拨打电话
                // 设置为true表示打开系统拨打电话界面,需用户点击拨号按钮后才开始拨打电话,false则无需确认直接拨打电话,默认值为true。
                // 返回值:
                // void : 无
                // 平台支持: Android - 2.2+ (支持),iOS - 5.1+ (支持): 忽略confirm参数,调用直接拨打电话。
//              plus.device.dial('10086', false); 

设备震动


//              plus.device.vibrate( milliseconds );

                // 参数:
                // milliseconds: ( Number ) 必选 设备振动持续的时间
                // 数值类型,单位为ms,默认为500ms。

//              plus.device.vibrate(600);

Device模块用于获取网络信息



                // 常量:
                // CONNECTION_UNKNOW: 网络状态常量,表示当前设备网络状态未知,固定值为0。
                // CONNECTION_NONE: 网络状态常量,当前设备网络未连接网络,固定值为1。
                // CONNECTION_ETHERNET: 网络状态常量,当前设备连接到有线网络,固定值为2。
                // CONNECTION_WIFI: 网络状态常量,当前设备连接到无线WIFI网络,固定值为3。
                // CONNECTION_CELL2G: 网络状态常量,当前设备连接到蜂窝移动2G网络,固定值为4。
                // CONNECTION_CELL3G: 网络状态常量,当前设备连接到蜂窝移动3G网络,固定值为5。
                // CONNECTION_CELL4G: 网络状态常量,当前设备连接到蜂窝移动4G网络,固定值为6。

//              使用getCurrentType函数获取设备当前连接的网络类型
//              plus.networkinfo.getCurrentType();

                // 检测网络状态变化
//              mui.plusReady(function(){
//                  document.addEventListener("netchange", function(){
//                      var nt = plus.networkinfo.getCurrentType();
//                      switch ( nt ) {
//                          case plus.networkinfo.CONNECTION_ETHERNET:
//                          case plus.networkinfo.CONNECTION_WIFI:
//                          mui.alert("切换到wifi!"); 
//                          break; 
//                          case plus.networkinfo.CONNECTION_CELL2G:
//                          case plus.networkinfo.CONNECTION_CELL3G:
//                          case plus.networkinfo.CONNECTION_CELL4G:
//                          mui.alert("切换到4G网络!"); 
//                          break; 
//                          default:
//                          mui.alert("无网络!"); 
//                          break;
//                      }
//                  }, false );
//              });

nativeUI系统原生界面管理


                    // 1、actionSheet: 弹出系统选择按钮框     
                    // void plus.nativeUI.actionSheet( actionsheetStyle, actionsheetCallback );
                    // 说明:从底部动画弹出系统样式选择按钮框,可设置选择框的标题、按钮文字等。 弹出的提示框为非阻塞模式,用户点击选择框上的按钮后关闭,并通过actionsheetCallback回调函数通知用户选择的按钮。
                    // 参数:
//                  actionsheetStyle: ( ActionSheetStyle ) 必选 选择按钮框显示的样式
//                  actionsheetCallback: ( ActionSheetCallback ) 可选 选择按钮框关闭后的回调函数

//                  plus.nativeUI.actionSheet( {title:"test",cancel:"取消",buttons:[{title:"1"},{title:"2"}]}, function(e){
//                      // e.index 代表选择按钮的序列号
//                      console.log( "User pressed: "+e.index );
//                  });

                    // 2、alert弹出系统提示对话框
                    // void plus.nativeUI.alert( message, alertCB, title, buttonCapture );
                    // 说明:创建并显示系统样式提示对话框,可设置提示对话框的标题、内容、按钮文字等。 弹出的提示对话框为非阻塞模式,用户点击提示对话框上的按钮后关闭,并通过alertCB回调函数通知对话框已关闭。
                    // 参数:
//                  message: ( String ) 必选 提示对话框上显示的内容
//                  alertCB: ( AlertCallback ) 可选 提示对话框上关闭后的回调函数
//                  title: ( String ) 可选 提示对话框上显示的标题
//                  buttonCapture: ( String ) 必选 提示对话框上按钮显示的内容

//                  plus.nativeUI.alert('hi boy!',function(){},'test','确定');

                    // 3、confirm 弹出系统确认对话框
                    // void plus.nativeUI.confirm( message, confirmCB, title, buttons );
                    // 说明:创建并显示系统样式确认对话框,可设置确认对话框的标题、内容、按钮数目及其文字。 弹出的确认对话框为非阻塞模式,用户点击确认对话框上的按钮后关闭,并通过confirmCB回调函数通知用户点击的按钮索引值。
                    // 参数:
//                  message: ( String ) 必选 确认对话框上显示的内容
//                  confirmCB: ( ConfirmCallback ) 可选 确认对话框关闭后的回调函数   回调函数中包括Event参数,可通过其index属性(Number类型)获取用户点击按钮的索引值。
//                  title: ( String ) 可选 确认对话框上显示的标题
//                  buttons: ( Array[ String ] ) 可选 确认对话框上显示的按钮 字符串数组,每项对应在确认对话框上显示一个按钮,用户点击后通过confirmCB返回用户点击按钮的在数组中的索引值。

//                  plus.nativeUI.confirm('确定要删除吗?',function(e){
//                      if(e.index == 1){
//                          alert('yes');
//                      }
//                  },'提示', ['否','是0']);

                    // 4、loading等待对话框
                    //  closeWaiting: 关闭系统等待对话框
                    //  showWaiting: 显示系统等待对话框
//                  var w = plus.nativeUI.showWaiting();
//                  setTimeout(function (){
//                      w.close();//或者plus.nativeUI.closeWaiting();
//                  }, 3000);

                    // 5、prompt 弹出系统输入对话框
                    // void plus.nativeUI.prompt( message, promptCB, title, tip, buttons );
                    // 说明:创建并显示系统样式输入对话框,可设置输入对话框的标题、内容、提示输入信息、按钮数目及其文字。 弹出的输入对话框为非阻塞模式,其中包含编辑框供用户输入内容,用户点击输入对话框上的按钮后自动关闭,并通过promptCB回调函数返回用户点击的按钮及输入的内容。
//                  参数:
//                  message: ( String ) 必选 输入对话框上显示的内容
//                  promptCB: ( PromptCallback ) 可选 关闭输入对话框的回调函数  回调函数中包括Event参数,可通过其index属性(Number类型)获取用户点击按钮的索引值,通过其value属性(String类型)获取用户输入的内容。
//                  title: ( String ) 可选 输入对话框上显示的标题
//                  tip: ( String ) 可选 输入对话框上编辑框显示的提示文字
//                  buttons: ( Array[ String ] ) 可选 输入对话框上显示的按钮数组

//                  plus.nativeUI.prompt('您的姓名',function(e){
//                          //可通过event.index(Number类型)获取用户关闭输入对话框点击按钮的索引值,索引值从0开始
//                          //通过event.value(String类型)获取用户输入的内容,如果没有输入则返回空字符串。
//                          if(e.index == 0){
//                              alert(e.value);
//                          }
//                  },'hcoder','请输入...',['提交','取消']);

                    // 6、toast显示自动消失的提示消息
                    // void plus.nativeUI.toast( message, options );
                    // 说明: 创建并显示系统样式提示消息,弹出的提示消息为非阻塞模式,显示指定时间后自动消失。 提示消息显示时间可通过options的duration属性控制,长时间提示消息显示时间约为3.5s,短时间提示消息显示时间约为2s。
//                      参数:
//                      message: ( String ) 必选 提示消息上显示的文字内容
//                      options: ( ToastOption ) 可选 提示消息的参数    可设置提示消息显示的图标、持续时间、位置等。

//                  plus.nativeUI.toast("我会自动离开",{
//                      align: "center", //   提示消息框在屏幕中的水平位置 "left"、"center"、"right"
//                      duration: "long",  // 提示消息框显示的时间 "long"、"short",值为"long"时显示时间约为3.5s,值为"short"时显示时间约为2s,未设置时默认值为"short"。
//                      icon: 'images/60x60.gif', // 提示消息框上显示的图标
//                      style: "inline", // 提示消息框上显示的样式  "block"表示图标与文字分两行显示,上面显示图标,下面显示文字; "inline"表示图标与文字在同一行显示,左边显示图标,右边显示文字。 默认值为"block"。
//                      type: 'text',  //  "text" - 显示的消息内容为文本字符串; "richtext" - 显示的消息内容为富文本内容。 默认值为"text"。 
//                      richTextStyle: {
//                          align:'center'
//                      }, //  富文本样式
//                      verticalAlign: "bottom" // 提示消息在屏幕中的垂直位置 可选值为"top"、"center"、"bottom",分别为垂直居顶、居中、居底,未设置时默认值为"bottom"。
//                  }); 

                    // 7、根据手册改造loading
                    // 手册地址:http://www.html5plus.org/doc/zh_cn/nativeui.html
//                   plus.nativeUI.showWaiting('加载中...',{padding:'10px', loading:{display:'inline'}});

// – storage本地数据存储


                    // Storage模块管理应用本地数据存储区,用于应用数据的保存和读取。应用本地数据与localStorage、sessionStorage的区别在于数据有效域不同,前者可在应用内跨域操作,数据存储期是持久化的,并且没有容量限制。通过plus.storage可获取应用本地数据管理对象。

                    // getLength: 获取应用存储区中保存的键值对的个数
//                  var total = plus.storage.getLength();
//                  alert(total);

                    // setItem: 修改或添加键值(key-value)对数据到应用数据存储中
//                   plus.storage.setItem('name','和大喵!');

                    // getItem: 通过键(key)检索获取应用存储的值
//                  var name = plus.storage.getItem('name');
//                  mui.toast(name);

                    // removeItem: 通过key值删除键值对存储的数据
//                  plus.storage.removeItem('name');

                    // clear: 清除应用所有的键值对存储数据
//                  plus.storage.clear();

// createPlayer()创建音频对象


//                  var  player = plus.audio.createPlayer('_www/audios/1.mp3');
//                  
//                      player.play(function(){
//                          //播放完毕
//                          alert("Audio play success !!");
//                      }, function (e){
//                          alert("Audio play error: " + e.message); 
//                      });
//                   
//                  // stop: 停止播放音频
//                  setTimeout(function () {
//                      player.stop();
//                  },10000)
<think>首先,用户的问题是:“我想询问UniApp H5+应用是否支持使用插件 请问uniapp h5+ 是否支持插件功能”。这是在问UniApp框架中,针对H5+应用(可能是Web应用或混合应用)是否支持使用插件。 从系统指令中,我需要: - 使用中文回答。 - 结构清晰,逐步解决问题。 - 保证回答真实可靠。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 - 生成相关问题。 - 对于数学表达式,使用$...$或$$...$$格式,但在这个上下文中,可能不涉及数学,所以我会注意。 - 参考提供的引用内容。 提供的引用: - [^1]: 提到在Vue中使用第三方插件的问题,以及解决方案如使用uni-ui或官方插件市场,并提到renderjs在小程序中不推荐。 - [^2]: 讨论uniapp h5端扫码功能,使用插件市场的mumu-get-qrcode。 - [^3]: 关于uniapp实现PDF预览和下载的技术。 - [^4]: 关于uniapp 5+APP打开其他软件或跳转应用商城的配置。 这些引用表明,在UniApp中,确实有插件机制,尤其是在H5端。引用[^2]直接提到在H5端使用插件市场的插件来实现扫码功能。 关键点: - UniApp支持插件功能,特别是在H5端。 - 用户可以通过官方插件市场(如DCloud的插件市场)找到和使用插件。 - 在H5端,某些插件可能需要使用renderjs来处理浏览器对象,但需要谨慎使用,因为在小程序中不推荐。 回答结构: 1. **直接回答问题**:是的,UniApp H5+应用支持使用插件。 2. **解释支持方式**: - UniApp有一个丰富的插件生态系统,包括官方uni-ui组件和第三方插件。 - 对于H5端,插件可以通过官方插件市场获取。 - 例如,引用[^2]中提到使用mumu-get-qrcode插件实现H5端扫码功能。 3. **注意事项**: - 在H5端,某些插件可能需要使用renderjs来处理DOM或浏览器API,但要注意性能问题。 - 引用[^1]提到,在小程序端不推荐使用renderjs,但在H5端可能更可行。 - 确保插件兼容H5平台,因为UniApp是多端框架。 4. **如何使用**: - 访问UniApp官方插件市场。 - 搜索并安装所需插件。 - 在代码中引入和使用,如引用[^2]所示。 5. **引用相关部分**:在解释时自然地添加引用标识。 6. **生成相关问题**:在回答末尾,添加“相关问题”部分,基于用户查询生成相关的问题。 生成相关问题: - 基于用户问题,可能的扩展问题: 1. 如何在UniApp H5端安装和使用插件? 2. UniApp插件市场有哪些常用插件? 3. 在H5端使用插件时需要注意什么? 4. UniApp支持哪些类型的插件? 5. 如何开发自定义插件给UniApp使用? 确保回答真实可靠:UniApp确实支持插件,参考官方文档和引用内容。 最终回答结构: - 开头:直接回答。 - 主体:详细解释,分步骤或要点。 - 结尾:总结。 - 然后,添加“相关问题”部分。</think>### UniApp H5+应用是否支持使用插件功能? 是的,**UniApp H5+应用支持使用插件功能**。UniApp作为一个跨端开发框架,提供了完善的插件机制,允许开发者在H5端(浏览器环境)集成第三方插件或自定义功能,以扩展应用能力。以下我将逐步解释支持情况、使用方法和注意事项,确保回答基于真实可靠的参考信息。 #### 1. **插件支持机制** - UniApp通过**官方插件市场**(如DCloud插件市场)提供丰富的插件资源,涵盖H5APP、小程序等多个平台。这些插件可以直接在项目中安装和使用。 - 在H5端,插件通常通过JavaScript或Vue组件形式集成。例如,引用[^2]中提到,H5端扫码功能可以通过插件市场的`mumu-get-qrcode`实现,开发者只需引入插件并调用其方法即可: ```javascript // 示例:使用mumu-get-qrcode插件实现扫码 import { scanQRCode } from 'mumu-get-qrcode'; export default { methods: { handleScan() { scanQRCode() .then(result => console.log('扫码成功:', result)) .catch(error => console.error('扫码失败:', error)); } } }; ``` 这展示了H5端插件如何无缝集成到UniApp项目中[^2]。 #### 2. **如何使用插件** - **步骤1: 查找插件** 访问UniApp官方插件市场(如[https://ext.dcloud.net.cn](https://ext.dcloud.net.cn)),搜索关键词如“H5扫码”“PDF预览”等。例如,引用[^3]提到PDF预览功能可通过特定插件实现。 - **步骤2: 安装与引入** 通过npm或直接下载插件包,在项目中引入。H5端插件通常需要在`pages.json`或组件中注册: ```json // pages.json 示例 { "easycom": { "autoscan": true, "custom": { "mumu-get-qrcode": "@/components/mumu-get-qrcode/index.vue" } } } ``` - **步骤3: 调用插件API** 在Vue组件中直接使用插件提供的方法或组件。引用[^2]演示了扫码插件的成功和失败回调处理。 #### 3. **注意事项与限制** - **平台兼容性**:并非所有插件都全平台支持。H5端插件可能依赖浏览器API(如DOM操作),因此在其他平台(如微信小程序)需谨慎。例如,引用[^1]指出,Vue第三方插件在小程序端可能不兼容,需使用`renderjs`(但官方不推荐在小程序用),而在H5端`renderjs`可安全用于处理浏览器对象[^1]。 - **性能优化**:H5端插件可能影响加载性能。建议选择官方认证插件(如`uni-ui`),并测试插件在目标设备的运行情况。 - **特殊场景处理**:对于需要调用原生能力的插件(如打开其他APP),需配置URL Schemes(引用[^4])。H5端可能需通过WebView或混合方案实现。 - **安全与维护**:优先选择更新频繁、文档齐全的插件,避免未维护的第三方代码引入风险。 #### 4. **总结** UniApp H5+应用完全支持插件功能,开发者可通过官方市场快速扩展应用能力,如扫码、PDF处理等。关键在于选择兼容H5平台的插件,并遵循集成规范。实际开发中,参考官方文档和社区案例(如引用[^2][^3])能有效降低踩坑风险。 如果您有具体插件需求(如扫码或文件预览),我可以进一步提供实现示例! ### 相关问题 1. 如何在UniApp H5端安装和使用第三方插件? 2. UniApp插件市场有哪些推荐用于H5端的常用插件? 3. 在H5端使用插件时,如何避免性能问题? 4. UniApp插件是否支持跨平台(如H5APP、小程序)? 5. 如何开发自定义插件给UniApp项目使用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值