HBuilder实现WebApp,总结MUI使用过程中的坑和方法

MUI尝过的坑和重要知识点总结

1:自带的各种标签的 样式权重过高,重写不方便(和BootStrap比较来说,BootStrap更加灵活)
2:链接跳转。常规的a标签 加href是无法跳转的,浏览器有效,但是在手机上运行是无效的 
需要添加mui的定义的点击事件。
分两种 
(1):页面已存在的跳转标签

   <script>
            document.getElementById('user-guide').addEventListener('tap', function() {
                //打开关于页面
                var newsid=$(this).find(".news-id").html();
                mui.openWindow({
                    url: 'use-guide.html',
                    id: 'use-guide'
                });
            });
        </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

(2):页面不存在的跳转标签(还可以在链接跳转过程中 添加传递的参数)

<script>
            mui("body").on('tap',"#detail-news", function() {
                //打开关于页面
                var newsid=$(this).find(".news-id").html();
                console.log("newsid");
                mui.openWindow({
                    url: 'detail-news.html?'+newsid,
                    id: 'detail-news'
                });
            });
        </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

接受页面的处理:

var newsid = window.location.href.split('?')[1];
  • 1

3:页面过长,滑动没有效果 
关键类:mui-scroll-wrapper 
添加一个js就可以实现 页面滑动

mui('.mui-scroll-wrapper').scroll({
    deceleration: 0.0005 //flick 减速系数,系数越大,滚动速度越慢,滚动距离越小,默认值0.0006
});
  • 1
  • 2
  • 3

4:第三方 分享实现

在HBuilder中新创建新webapp项目 勾选 带登陆和设置的模板

里面包含 
第三方登陆
分享
图案锁屏
5:关于模态框 
模态框尽量放在根节点的子目录下(不要放在嵌套层),防止最外层的遮罩层的级别过高,覆盖模态框,导致点击事件无法触发响应
6:MUI修改手机物理back的方法 
首页的退出修改:

<script> 
             document.addEventListener("plusready", function() { 
                 // 注册返回按键事件 
                 plus.key.addEventListener('backbutton', function() { 
                 // 事件处理 
                     plus.nativeUI.confirm("退出程序?", function(event) { 
                         if (event.index) { 
                             plus.runtime.quit(); 
                         } 
                     }, null, ["取消", "确定"]); 
                 }, false); 
             }); 
         </script> 

         //方法二
         <script>
            var back_first = null;
            mui.back = function() {
                if(!back_first) {
                    back_first = new Date().getTime();
                    mui.toast('再按一次退出应用');
                    setTimeout(function() {
                        back_first = null;
                    }, 2000);
                } else {
                    if(new Date().getTime() - back_first < 2000) {
                        plus.runtime.quit();
                    }
                }
                return false;
            }
        </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

首页进入子页面后 返回上一层的返回按钮注册

 <script> 
         document.addEventListener("plusready", function() { 
             // 注册返回按键事件 
             plus.key.addEventListener('backbutton', function() { 
                 // 事件处理 
                 window.history.back(); 
             }, false); 
         }); 
     </script> 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

屏蔽返回按钮

            var old_back = mui.back;
            mui.back = function(){
                return false;
            }
  • 1
  • 2
  • 3
  • 4

7:实现原生APP里的进入导航实现,还可以,对进入的次数做监听 
首次进入显示导航,以后进入都不需要导航 
首页需要添加的事件

        // 设置启动时的轮播页
    function launchScreen() {
        //读取本地存储,检查是否为首次启动
        var showGuide = plus.storage.getItem("lauchFlag");

//      if(showGuide){ 
//          //有值,说明已经显示过了,无需显示;
//          //关闭splash页面;
//          plus.navigator.closeSplashscreen();
//          plus.navigator.setFullscreen(false);
//      }else{
//          //显示启动导航
//          mui.openWindow({
//              id:'guide',
//              url:'guide.html',
//              show:{
//                  aniShow:'none'
//              },
//              waiting:{
//                  autoShow:false
//              }
//          });
//      }
//测试期间,为了让导航页每次显示,就不做以上判断
//显示启动导航
            mui.openWindow({
                id:'guide',
                url:'guide.html',
                show:{
                    aniShow:'none'
                },
                waiting:{
                    autoShow:false
                }
            });
    }
        </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

调用方法


<script type="text/javascript">
//只要是MUI都会有初始化的过程
            mui.init()
             //创建子页面 初始化导航
            mui.plusReady(function() {
                launchScreen();
            });
        </script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

guide.html页面的实现

<body>
        <div id="slider" class="mui-slider mui-fullscreen" style="background-color: black;">
            <div class="mui-slider-group">

                <!-- 第1张 -->
                <div class="mui-slider-item">
                    <img src="img/leader1.jpg">
                </div>
                <!-- 第2张 -->
                <div class="mui-slider-item">
                    <img src="img/leader2.jpg">
                </div>
                <!-- 第3张 -->
                <div class="mui-slider-item">
                    <img src="img/leader3.jpg">
                    <button id='close' class="mui-btn mui-btn-warning mui-btn-outlined"></button>
                </div>
            </div>
            <div class="mui-slider-indicator">
                <div class="mui-indicator mui-active"></div>
                <div class="mui-indicator"></div>
                <div class="mui-indicator"></div>
            </div>
        </div>
        <script type="text/javascript" src="js/mui.min.js" ></script>
        <script>
            mui.back = function() {};
            mui.plusReady(function() {
                plus.navigator.setFullscreen(true);
                plus.navigator.closeSplashscreen();
            });
            //立即体验按钮点击事件
            document.getElementById("close").addEventListener('tap', function(event) {
                plus.storage.setItem("lauchFlag", "true"); 
                plus.navigator.setFullscreen(false);
                plus.webview.currentWebview().close();
            }, false);


        </script>
    </body>

猜你喜欢

转载自blog.csdn.net/yijiupingfan0914/article/details/80824837