HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

使用plus.nativeObj.View编写一个底部导航栏

view nativeObj

众所周知,5+plus提供原生绘画对象(View),通过原生绘画对象可以实现很多控件,以及无限遐想空间。
近期因为需要写一款APP,但是需要预加载的太多了,需要顶部栏还需要底部栏,如果用父子页面的话显然太卡了。
因此标题栏以及底部栏我均使用了plus.nativeObj.View “自绘”了顶部栏和底部栏。


如图所示,这仅仅是最简单的一个样子,就像官方说的,还可以在里面画个球...
附件看图,这儿删繁就简。直接展示使用方法。
首先官方文档:http://www.html5plus.org/doc/zh_cn/nativeobj.html
使用方法:

var _footer = new plus.nativeObj.View('footer');  
var _a = ['img/jingxuan.png','img/app.png','img/ph.png','img/mine.png'];  
var _b = ['img/jingxuan_2.png','img/app_2.png','img/ph_2.png','img/mine_2.png'];  
var _c = ['a','b','c','d'];  
_fbar.setTabInfo(_footer,_a,_b,_c)   
_fbar.setCB(function(tab){  
    console.log('切换选夹>>'+tab);  
});

其中_a 为普通状态图片 _b 为选中状态图片 _c 为选项文本(我一般都是两个字)
关于焦点切换都在js中处理了,开发者只需要在setCB时候传入function,接收即将切换的选夹,并且切换需要显示的webview就行了。
对了,高度为60px,需要如何改进的自行修改js内部。
js纯属抠出来的,源文件包含的太多代码,抠出来的时候可能有点乱。

继续阅读 »

众所周知,5+plus提供原生绘画对象(View),通过原生绘画对象可以实现很多控件,以及无限遐想空间。
近期因为需要写一款APP,但是需要预加载的太多了,需要顶部栏还需要底部栏,如果用父子页面的话显然太卡了。
因此标题栏以及底部栏我均使用了plus.nativeObj.View “自绘”了顶部栏和底部栏。


如图所示,这仅仅是最简单的一个样子,就像官方说的,还可以在里面画个球...
附件看图,这儿删繁就简。直接展示使用方法。
首先官方文档:http://www.html5plus.org/doc/zh_cn/nativeobj.html
使用方法:

var _footer = new plus.nativeObj.View('footer');  
var _a = ['img/jingxuan.png','img/app.png','img/ph.png','img/mine.png'];  
var _b = ['img/jingxuan_2.png','img/app_2.png','img/ph_2.png','img/mine_2.png'];  
var _c = ['a','b','c','d'];  
_fbar.setTabInfo(_footer,_a,_b,_c)   
_fbar.setCB(function(tab){  
    console.log('切换选夹>>'+tab);  
});

其中_a 为普通状态图片 _b 为选中状态图片 _c 为选项文本(我一般都是两个字)
关于焦点切换都在js中处理了,开发者只需要在setCB时候传入function,接收即将切换的选夹,并且切换需要显示的webview就行了。
对了,高度为60px,需要如何改进的自行修改js内部。
js纯属抠出来的,源文件包含的太多代码,抠出来的时候可能有点乱。

收起阅读 »

手机GPS定位

地图插件 地图

HTML5+ 提供了两种获取当前用户GPS位置的方式:

  1. plus.geolocation.getCurrentPosition
  2. Map.getUserLocation

经过测试发现第一种方法获得的位置离散程度比第二种方式高,会出现很多偏离当前真实位置较大的“噪点”,因此推荐使用第二种获取GPS位置的方式。

参考代码如下:

HTML中放一个div容器:  
<div id='allmap' style='display: none;'></div>    

JS中添加代码:  
function queryGeoLocation() {  
    var mapObj = new plus.maps.Map('allmap');  
    var getGPS = mapObj.getUserLocation( function ( state, point ){  
        if( 0 == state ){  

            mapObj.centerAndZoom(point, 15);  
            console.debug(JSON.stringify(point));  
        }else{  

        }  
    } );  

    if(getGPS == false) {  

    }  
}

无论使用哪种方式,都需要首先获取百度地图或者高德地图的APP Key。参考地图插件配置一文即可(http://ask.dcloud.net.cn/article/29),但在新版HBuild中,设置Key的方式已经简化,仅需要在manifest.json的“SDK配置”视图中添加获得的appkey即可,无需修改代码视图。

继续阅读 »

HTML5+ 提供了两种获取当前用户GPS位置的方式:

  1. plus.geolocation.getCurrentPosition
  2. Map.getUserLocation

经过测试发现第一种方法获得的位置离散程度比第二种方式高,会出现很多偏离当前真实位置较大的“噪点”,因此推荐使用第二种获取GPS位置的方式。

参考代码如下:

HTML中放一个div容器:  
<div id='allmap' style='display: none;'></div>    

JS中添加代码:  
function queryGeoLocation() {  
    var mapObj = new plus.maps.Map('allmap');  
    var getGPS = mapObj.getUserLocation( function ( state, point ){  
        if( 0 == state ){  

            mapObj.centerAndZoom(point, 15);  
            console.debug(JSON.stringify(point));  
        }else{  

        }  
    } );  

    if(getGPS == false) {  

    }  
}

无论使用哪种方式,都需要首先获取百度地图或者高德地图的APP Key。参考地图插件配置一文即可(http://ask.dcloud.net.cn/article/29),但在新版HBuild中,设置Key的方式已经简化,仅需要在manifest.json的“SDK配置”视图中添加获得的appkey即可,无需修改代码视图。

收起阅读 »

h5+ App 开发实战教程 - 仿《有道词典》已经发布!更多免费视频教程(mui、h5+、h.js、仿《今日头条》新闻客户端实战)等教程汇总

mui

基于mui、h5+、h.js的App开发实战教程 - 仿《有道词典》 已经发布!


总计10节:
1、入口页面布局子页面布局(含原生侧滑窗口切换
2、主页面布局及代码实现
3、新闻详情页面开发
4、词典页面功能及代码编写
5、热点新闻栏目开发(涵盖:下拉刷新、上拉加载等知识点)
6、完成登录检查及微信登录
7、“我的”页面开发
8、推送及相关统计
9、app 在线升级及安装
10、发布应用到应用宝并进行应用加固及签名

课程总计 4个半小时,包含源码、apk。涉及mui布局修改、服务器交互、微信登录、推送、app升级、加固签名等大部分开发知识!
收费50元,有经济困难的在校学生可以联系客服 1265928288 进行优惠(不是勿扰)。
购买方式
腾讯课堂:
https://ke.qq.com/course/194834#tuin=4f8da6

资料包包含:源码、素材、文字资料,购买后即可下载! 观看时候选择超清模式,代码清晰可见!

交流qq群
1群 335126794(已满), 2群 340610532

hcoder 一直致力于奉献高质量 教程,官网上 mui h5+ 等免费教程播放量已经达到5万,收点费用为了做的更好,希望大家理解。
免费教程地址
http://www.hcoder.net/course

继续阅读 »

基于mui、h5+、h.js的App开发实战教程 - 仿《有道词典》 已经发布!


总计10节:
1、入口页面布局子页面布局(含原生侧滑窗口切换
2、主页面布局及代码实现
3、新闻详情页面开发
4、词典页面功能及代码编写
5、热点新闻栏目开发(涵盖:下拉刷新、上拉加载等知识点)
6、完成登录检查及微信登录
7、“我的”页面开发
8、推送及相关统计
9、app 在线升级及安装
10、发布应用到应用宝并进行应用加固及签名

课程总计 4个半小时,包含源码、apk。涉及mui布局修改、服务器交互、微信登录、推送、app升级、加固签名等大部分开发知识!
收费50元,有经济困难的在校学生可以联系客服 1265928288 进行优惠(不是勿扰)。
购买方式
腾讯课堂:
https://ke.qq.com/course/194834#tuin=4f8da6

资料包包含:源码、素材、文字资料,购买后即可下载! 观看时候选择超清模式,代码清晰可见!

交流qq群
1群 335126794(已满), 2群 340610532

hcoder 一直致力于奉献高质量 教程,官网上 mui h5+ 等免费教程播放量已经达到5万,收点费用为了做的更好,希望大家理解。
免费教程地址
http://www.hcoder.net/course

收起阅读 »

移动app如何在手机关屏后仍能正常运行、接收信息

最近在弄一个安卓APP,需要每隔几秒钟上报一次GPS位置,但发现当手机休眠后(屏幕熄灭后)APP不再运行,因此也不能上报GPS位置。

借助安卓的WakeLock机制,我们可以实现让APP在后台运行。实现代码如下:


var g_wakelock = null;  
//允许程序后台运行,以持续获取GPS位置  
function wakeLock() {  
    //Android  
    var main = plus.android.runtimeMainActivity();  
    var Context = plus.android.importClass("android.content.Context");  
    var PowerManager = plus.android.importClass("android.os.PowerManager");  
    var pm = main.getSystemService(Context.POWER_SERVICE);  
    g_wakelock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ANY_NAME");  
    g_wakelock.acquire();  
}  

//结束程序后台运行  
function releaseWakeLock () {  
    if(g_wakelock != null && g_wakelock.isHeld()) {  
        g_wakelock.release();  
        g_wakelock = null;  
    }  
}  

在需要允许后台运行的时候调用wakeLock(),在希望停止的时候调用releaseWakeLock()

继续阅读 »

最近在弄一个安卓APP,需要每隔几秒钟上报一次GPS位置,但发现当手机休眠后(屏幕熄灭后)APP不再运行,因此也不能上报GPS位置。

借助安卓的WakeLock机制,我们可以实现让APP在后台运行。实现代码如下:


var g_wakelock = null;  
//允许程序后台运行,以持续获取GPS位置  
function wakeLock() {  
    //Android  
    var main = plus.android.runtimeMainActivity();  
    var Context = plus.android.importClass("android.content.Context");  
    var PowerManager = plus.android.importClass("android.os.PowerManager");  
    var pm = main.getSystemService(Context.POWER_SERVICE);  
    g_wakelock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ANY_NAME");  
    g_wakelock.acquire();  
}  

//结束程序后台运行  
function releaseWakeLock () {  
    if(g_wakelock != null && g_wakelock.isHeld()) {  
        g_wakelock.release();  
        g_wakelock = null;  
    }  
}  

在需要允许后台运行的时候调用wakeLock(),在希望停止的时候调用releaseWakeLock()

收起阅读 »

每天1.36元, 系统学习APP开发

每天1.36元, 系统学习APP开发
按照学习路线图系统学习, 从0到1开发自己的APP...

东翌学院现推出视频订阅学习,【SVIP订阅499/年】可学习所有视频课程(包含实战课程) ,网站视频包含:MUI整套学习课程,包含(HTML+CSS+JS+PHP+Mysql+HBuilder+MUI+H5++Castapp+实战项目);ReactNative整套学习课程,包含(ECMAScript6+ReactJs+ReactNative+PHP+Mysql+实战项目)!有需要学习同学请联系Q:2547209832 群:326787019 报名请通过此链接:http://www.dongyixueyuan.com/expand/epo2wx 通过此链接报名成功后联系老师Q:2547209832领取福利哦!详情咨询QQ:2547209832

继续阅读 »

每天1.36元, 系统学习APP开发
按照学习路线图系统学习, 从0到1开发自己的APP...

东翌学院现推出视频订阅学习,【SVIP订阅499/年】可学习所有视频课程(包含实战课程) ,网站视频包含:MUI整套学习课程,包含(HTML+CSS+JS+PHP+Mysql+HBuilder+MUI+H5++Castapp+实战项目);ReactNative整套学习课程,包含(ECMAScript6+ReactJs+ReactNative+PHP+Mysql+实战项目)!有需要学习同学请联系Q:2547209832 群:326787019 报名请通过此链接:http://www.dongyixueyuan.com/expand/epo2wx 通过此链接报名成功后联系老师Q:2547209832领取福利哦!详情咨询QQ:2547209832

收起阅读 »

选项卡切换下拉刷新,上拉加载,回到顶部,跳到底部的实现方法。

区域滚动 scroll


今天遇到一个问题,在使用官方提供的选项卡切换,附带上拉加载下拉刷新的时候遇到问题。
首先,我需要增加一个返回顶部功能,即切换选项同时返回顶部。
其次,我需要在底部加载完毕的时候,对应选项跳转到底部。

首先先了解下,当采用如图的方式构建的时候,需要了解以下几点:
1。滚动条是在div内部,即.scroll 包含区域的
这意味着window.scroll dom.scrollTop 均无效。
2.其中每一个子div都包含一个.scroll区域
这意味着mui('.mui-scroll-wrapper').scroll()方法返回的将是一个数组。
3.选项头包含一个.scroll区域
这意味着mui('.mui-scroll-wrapper').scroll()[0]指向选项头的scroll区域。

了解完以下几点就简单多了。下拉刷新上拉加载的js和方法官方Hello MUI例程里面有,我就不多说了。
直接po代码。
回到顶部:

> mui('.btn_top')[0].addEventListener('tap',function(){
> var nT = mui('.mui-slider').slider().slideNumber;
> nT = nT+1
> mui('.mui-scroll-wrapper').scroll()[nT].scrollTo(0,0,100)
> console.log('第'+nT+'选项请求返回顶部')
> })

其中nT代表当前slider对应选项卡。
其中的nT+1目的就是避开选项头的那一个scroll区域。
回到底部:

> mui('.btn_bottomtop')[0].addEventListener('tap',function(){
> var nT = mui('.mui-slider').slider().slideNumber;
> nT = nT+1
> mui('.mui-scroll-wrapper').scroll()[nT].scrollToBottom(100);
> console.log('第'+nT+'选项请求返回顶部')
> })

频繁出现的100指代的是100毫秒。
具体参考官方文档:http://dev.dcloud.net.cn/mui/ui/#scroll

继续阅读 »


今天遇到一个问题,在使用官方提供的选项卡切换,附带上拉加载下拉刷新的时候遇到问题。
首先,我需要增加一个返回顶部功能,即切换选项同时返回顶部。
其次,我需要在底部加载完毕的时候,对应选项跳转到底部。

首先先了解下,当采用如图的方式构建的时候,需要了解以下几点:
1。滚动条是在div内部,即.scroll 包含区域的
这意味着window.scroll dom.scrollTop 均无效。
2.其中每一个子div都包含一个.scroll区域
这意味着mui('.mui-scroll-wrapper').scroll()方法返回的将是一个数组。
3.选项头包含一个.scroll区域
这意味着mui('.mui-scroll-wrapper').scroll()[0]指向选项头的scroll区域。

了解完以下几点就简单多了。下拉刷新上拉加载的js和方法官方Hello MUI例程里面有,我就不多说了。
直接po代码。
回到顶部:

> mui('.btn_top')[0].addEventListener('tap',function(){
> var nT = mui('.mui-slider').slider().slideNumber;
> nT = nT+1
> mui('.mui-scroll-wrapper').scroll()[nT].scrollTo(0,0,100)
> console.log('第'+nT+'选项请求返回顶部')
> })

其中nT代表当前slider对应选项卡。
其中的nT+1目的就是避开选项头的那一个scroll区域。
回到底部:

> mui('.btn_bottomtop')[0].addEventListener('tap',function(){
> var nT = mui('.mui-slider').slider().slideNumber;
> nT = nT+1
> mui('.mui-scroll-wrapper').scroll()[nT].scrollToBottom(100);
> console.log('第'+nT+'选项请求返回顶部')
> })

频繁出现的100指代的是100毫秒。
具体参考官方文档:http://dev.dcloud.net.cn/mui/ui/#scroll

收起阅读 »

h5+ App 开发实战教程 - 仿《有道词典》已经发布!更多免费视频教程(mui、h5+、h.js、app实战)等教程汇总

mui

基于mui、h5+、h.js的App开发实战教程 - 仿《有道词典》 已经发布!


总计10节:
1、入口页面布局子页面布局(含原生侧滑窗口切换
2、主页面布局及代码实现
3、新闻详情页面开发
4、词典页面功能及代码编写
5、热点新闻栏目开发(涵盖:下拉刷新、上拉加载等知识点)
6、完成登录检查及微信登录
7、“我的”页面开发
8、推送及相关统计
9、app 在线升级及安装
10、发布应用到应用宝并进行应用加固及签名

课程总计 4个半小时,包含源码、apk。涉及mui布局修改、服务器交互、微信登录、推送、app升级、加固签名等大部分开发知识!
收费50元,有经济困难的在校学生可以联系客服 1265928288 进行优惠(不是勿扰)。
购买方式
腾讯课堂:
https://ke.qq.com/course/194834#tuin=4f8da6

资料包包含:源码、素材、文字资料,购买后即可下载! 观看时候选择超清模式,代码清晰可见!

hcoder 一直致力于奉献高质量 教程,官网上 mui h5+ 等免费教程播放量已经达到5万,收点费用为了做的更好,希望大家理解。
免费教程地址
http://www.hcoder.net/course

继续阅读 »

基于mui、h5+、h.js的App开发实战教程 - 仿《有道词典》 已经发布!


总计10节:
1、入口页面布局子页面布局(含原生侧滑窗口切换
2、主页面布局及代码实现
3、新闻详情页面开发
4、词典页面功能及代码编写
5、热点新闻栏目开发(涵盖:下拉刷新、上拉加载等知识点)
6、完成登录检查及微信登录
7、“我的”页面开发
8、推送及相关统计
9、app 在线升级及安装
10、发布应用到应用宝并进行应用加固及签名

课程总计 4个半小时,包含源码、apk。涉及mui布局修改、服务器交互、微信登录、推送、app升级、加固签名等大部分开发知识!
收费50元,有经济困难的在校学生可以联系客服 1265928288 进行优惠(不是勿扰)。
购买方式
腾讯课堂:
https://ke.qq.com/course/194834#tuin=4f8da6

资料包包含:源码、素材、文字资料,购买后即可下载! 观看时候选择超清模式,代码清晰可见!

hcoder 一直致力于奉献高质量 教程,官网上 mui h5+ 等免费教程播放量已经达到5万,收点费用为了做的更好,希望大家理解。
免费教程地址
http://www.hcoder.net/course

收起阅读 »

app中判断自动升级的一个主要逻辑

1.在服务器需要一个json或html文件,json最好。
{
"state": "yes",//是否自动更新
"mark": "1.0.6",//版本号
"url": "http:\/\/XXXXXXXX\/APPobject\/mmm.wgt"//更新的应用下载地址
}
2.自动更新函数
t是你当前正在运行的APP的版本号

//检查自动更新
function svn(t) {
var xhr_svn = new plus.net.XMLHttpRequest();
xhr_svn.onreadystatechange = function() {
if (xhr_svn.readyState == 4) {
if (xhr_svn.status == 200) {
var res = JSON.parse(xhr_svn.responseText);
if (res.state == 'yes') {
if (res.mark != t) {
var upr;
plus.nativeUI.confirm( "有新版本发布了,是否件更新?", function(e){
upr=(e.index==0)?"Y":"N";
// console.log(upr);
if(upr=="Y"){
var wt = plus.nativeUI.showWaiting('下载更新中,请勿关闭');
var url = res.url; // 下载文件地址
var dtask = plus.downloader.createDownload(url, {}, function(d, status) {
if (status == 200) { // 下载成功
var path = d.filename;
console.log(d.filename);
plus.runtime.install(path);
} else { //下载失败
alert("Download failed: " + status);
}
});
dtask.start();
}else{

                        }     
                    }, "XXX系统", ["确认","取消"] );     

                } else {     
                    console.log('最新');     
                }     
            }     
        } else {     
            plus.nativeUI.toast( "网络连接错误!");     
        }     
    }     
}     
xhr_svn.open("GET", "http:/XXX/APPobject/imes/update.json");//这里的地址是上面json文件的地址     
xhr_svn.send();     

}
3.调用方法:在每次系统打开运行的时候执行上面的函数就可以

继续阅读 »

1.在服务器需要一个json或html文件,json最好。
{
"state": "yes",//是否自动更新
"mark": "1.0.6",//版本号
"url": "http:\/\/XXXXXXXX\/APPobject\/mmm.wgt"//更新的应用下载地址
}
2.自动更新函数
t是你当前正在运行的APP的版本号

//检查自动更新
function svn(t) {
var xhr_svn = new plus.net.XMLHttpRequest();
xhr_svn.onreadystatechange = function() {
if (xhr_svn.readyState == 4) {
if (xhr_svn.status == 200) {
var res = JSON.parse(xhr_svn.responseText);
if (res.state == 'yes') {
if (res.mark != t) {
var upr;
plus.nativeUI.confirm( "有新版本发布了,是否件更新?", function(e){
upr=(e.index==0)?"Y":"N";
// console.log(upr);
if(upr=="Y"){
var wt = plus.nativeUI.showWaiting('下载更新中,请勿关闭');
var url = res.url; // 下载文件地址
var dtask = plus.downloader.createDownload(url, {}, function(d, status) {
if (status == 200) { // 下载成功
var path = d.filename;
console.log(d.filename);
plus.runtime.install(path);
} else { //下载失败
alert("Download failed: " + status);
}
});
dtask.start();
}else{

                        }     
                    }, "XXX系统", ["确认","取消"] );     

                } else {     
                    console.log('最新');     
                }     
            }     
        } else {     
            plus.nativeUI.toast( "网络连接错误!");     
        }     
    }     
}     
xhr_svn.open("GET", "http:/XXX/APPobject/imes/update.json");//这里的地址是上面json文件的地址     
xhr_svn.send();     

}
3.调用方法:在每次系统打开运行的时候执行上面的函数就可以

收起阅读 »

字符串和json数据的相互转换

json

JSON.parse()--字符串转换json、
JSON.stringify()--json转换成字符串

JSON.parse()--字符串转换json、
JSON.stringify()--json转换成字符串

判断是否有网络的问题

var network = true;
if(mui.os.plus){
mui.plusReady(function () {
if(plus.networkinfo.getCurrentType()==plus.networkinfo.CONNECTION_NONE){
network = false;
}
});
}

继续阅读 »

var network = true;
if(mui.os.plus){
mui.plusReady(function () {
if(plus.networkinfo.getCurrentType()==plus.networkinfo.CONNECTION_NONE){
network = false;
}
});
}

收起阅读 »

偏方式来解决白屏,闪屏。

闪屏 白屏

对webview隐藏或关闭时会有白屏,闪屏。
需要按着顺序来操作就可以欺骗眼睛方式来解决。
方式(步骤):
1,如果有其它页,关闭其它webview,非当前页显示页哦。.close()
2,显示新页,有300毫秒过渡。.show(“slide-in-right”, 300);
3,隐藏当前页,.hide();

这样的方式已经是最好的了,否则关闭其它页面也白屏,隐藏页面也白屏。

继续阅读 »

对webview隐藏或关闭时会有白屏,闪屏。
需要按着顺序来操作就可以欺骗眼睛方式来解决。
方式(步骤):
1,如果有其它页,关闭其它webview,非当前页显示页哦。.close()
2,显示新页,有300毫秒过渡。.show(“slide-in-right”, 300);
3,隐藏当前页,.hide();

这样的方式已经是最好的了,否则关闭其它页面也白屏,隐藏页面也白屏。

收起阅读 »

顶部选项卡div模式下,扫描二维码控件位置偏移问题解决(Webview方式)

Webview HTML5+

直接在div模式下,开启摄像头扫二维码的控件位置会发生偏移,而且难以定位,新建一个webview问题就解决了,刚开始学习h5+,代码写的比较烂,大家将就着看:

例子参照的是官方的MUI sample:tab-with-segmented-control.html

        <div class="mui-content">  
            <div style="padding: 10px 10px;">  
                <div id="segmentedControl" class="mui-segmented-control">  
                    <a name="item1" class="mui-control-item mui-active" href="#item1">表头信息</a>  
                    <a name="item2" class="mui-control-item" href="#item2">手动开单</a>  
                    <a name="item3" class="mui-control-item" href="#item3">扫描开单</a>                   
                </div>  
            </div>  

            <div style="margin: 0px 10px;">  
                <!--第一个标签页-->  
                <div id="item1" class="mui-control-content mui-active">  
                    1  
                </div>  

                <!--第二个标签页-->  
                <div id="item2" class="mui-control-content">  
                    2  
                </div>  

                <!--第三个标签页-->  
                <div id="item3" class="mui-control-content">  
                    3  
                </div>  

            </div>  

        <!--mui-content END-->  
        </div>

监听第三个标签被按下,创建一个webview并显示;如果已经创建,就只显示;切换到别的标签卡,隐藏webview

            var scanpage = null;  

            //监听标签卡被点击事件  
            mui('#segmentedControl').on('tap','.mui-control-item:not(.mui-active)',function(e){  
//              console.log(this.name);  
                if(this.name=="item3"){  

                    if(scanpage==null){  
                        ws = plus.webview.create("barcode.html","barcode",{  
                                top:"95px", bottom:"0px",left: "0px", width:"100%", height:"84%",   
                        });  
                        ws.show();  
                        scanpage = true;  

                    }else{  
                        ws.show();  
                    }  

                }else {  
                    if(scanpage == true){  
                        plus.webview.getWebviewById("barcode").hide();    
                    }  
                }  
            });  

barcode.html 参照的是H5+的官方demo:barcode.html ,改进了一点的是把扫描控件放在页面当中,空余位置显示扫描的结果信息,根据扫描到的结果,通过ajax发送到后来数据库匹配,取出商品信息……

继续阅读 »

直接在div模式下,开启摄像头扫二维码的控件位置会发生偏移,而且难以定位,新建一个webview问题就解决了,刚开始学习h5+,代码写的比较烂,大家将就着看:

例子参照的是官方的MUI sample:tab-with-segmented-control.html

        <div class="mui-content">  
            <div style="padding: 10px 10px;">  
                <div id="segmentedControl" class="mui-segmented-control">  
                    <a name="item1" class="mui-control-item mui-active" href="#item1">表头信息</a>  
                    <a name="item2" class="mui-control-item" href="#item2">手动开单</a>  
                    <a name="item3" class="mui-control-item" href="#item3">扫描开单</a>                   
                </div>  
            </div>  

            <div style="margin: 0px 10px;">  
                <!--第一个标签页-->  
                <div id="item1" class="mui-control-content mui-active">  
                    1  
                </div>  

                <!--第二个标签页-->  
                <div id="item2" class="mui-control-content">  
                    2  
                </div>  

                <!--第三个标签页-->  
                <div id="item3" class="mui-control-content">  
                    3  
                </div>  

            </div>  

        <!--mui-content END-->  
        </div>

监听第三个标签被按下,创建一个webview并显示;如果已经创建,就只显示;切换到别的标签卡,隐藏webview

            var scanpage = null;  

            //监听标签卡被点击事件  
            mui('#segmentedControl').on('tap','.mui-control-item:not(.mui-active)',function(e){  
//              console.log(this.name);  
                if(this.name=="item3"){  

                    if(scanpage==null){  
                        ws = plus.webview.create("barcode.html","barcode",{  
                                top:"95px", bottom:"0px",left: "0px", width:"100%", height:"84%",   
                        });  
                        ws.show();  
                        scanpage = true;  

                    }else{  
                        ws.show();  
                    }  

                }else {  
                    if(scanpage == true){  
                        plus.webview.getWebviewById("barcode").hide();    
                    }  
                }  
            });  

barcode.html 参照的是H5+的官方demo:barcode.html ,改进了一点的是把扫描控件放在页面当中,空余位置显示扫描的结果信息,根据扫描到的结果,通过ajax发送到后来数据库匹配,取出商品信息……

收起阅读 »