Hbuilder常用功能匯總


引用

樣式表: mui.min.css

Js:mui.min.js

常用功能

獲取頁面

var webView=plus.webview.currentWebview();//獲取當前頁

var webView=plus.webview.currentWebview().opener();//獲取上一頁的頁面

var webView= plus.webview.currentWebview().parent();//獲取父級頁面

var webView =plus.webview.getWebviewById("index");//根據Id獲取頁面

var webView = plus.webview.getLaunchWebview();//獲取主頁面

var all = plus.webview.all();//獲取所有頁面

webViewObj.reload(true);//刷新頁面

 

自定義返回事件

返回:mui.back(),可在點擊事件里添加

Beforeback:自定義返回按鈕事件,如果要禁用返回時間添加  return false;

 1 <script type="text/javascript">
 2     (function($, doc) {
 3 
 4         mui.init({
 5 
 6             beforeback: function() {
 7 
 8                 var webView = plus.webview.currentWebview();
 9 
10                 var pWebView = webView.opener();
11 
12                 $.fire(pWebView, "breck_page");
13 
14                 return false;
15 
16             }
17 
18         });
19 
20         $.plusReady(function() {});
21 
22     }(mui, document));
23 </script>

 

打開頁面/關閉頁面

打開頁面時用mui. openWindow()方法,url:打開頁面路徑,id:頁面Id、styles:頁面樣式、extras:參數(從A打開B頁面在B頁面可以取到該參數,)

 1 <script type="text/javascript">
 2 
 3     (function($, doc) {
 4 
 5         mui.init();
 6 
 7         $.plusReady(function() {
 8 
 9             $.openWindow({
10 
11                 url: "course_info.html",
12 
13                 id: "course_info.html",
14 
15                 styles:{ top:"50px"}
16 
17                 extras: {
18 
19                 courseId: courseId
20 
21                 },
22             })
23         });
24     }(mui, document));
25 
26 </script>

 

關閉頁面webViewObj.close(“slide-out-bottom”,300);參數1:關閉動畫,參數2:動畫時間

 

接收參數

  1. 獲取當前頁面 var webView = plus.webview.currentWebview();
  2. 獲取content字符串 var content= webView.content;
  3. 獲取當前序號,要取int型需要進行轉換 var index= parseInt(webView.index);

預加載頁面

方式一:

通過mui.init方法中的preloadPages參數進行配置.

 1 mui.init({
 2 
 3   preloadPages:[
 4 
 5     {
 6 
 7       url:prelaod-page-url,
 8 
 9       id:preload-page-id,
10 
11       styles:{},//窗口參數
12 
13       extras:{},//自定義擴展參數
14 
15       subpages:[{},{}]//預加載頁面的子頁面
16 
17     }
18 
19   ],
20 
21   preloadLimit:5//預加載窗口數量限制(一旦超出,先進先出)默認不限制
22 
23 });

 

該種方案使用簡單、可預加載多個頁面,但不會返回預加載每個頁面的引用,若要獲得對應webview引用,還需要通過plus.webview.getWebviewById方式獲得;另外,因為mui.init是異步執行,執行完mui.init方法后立即獲得對應webview引用,可能會失敗,例如如下代碼:

mui.init({

  preloadPages:[

    {

      url:'list.html',

      id:'list'

    }

  ]

});

var list = plus.webview.getWebviewByid('list');//這里可能返回空;

方式二:通過mui.preload方法預加載.

 1 <script type="text/javascript">
 2     (function ($, doc) {
 3         mui.init();
 4         $.plusReady(function () {
 5             mui.preload({
 6                 url: 'test_select_info.html',
 7                 id: page_id,
 8                 styles: {},
 9                 extras: {},
10             });
11             page.show("none");
12         });
13     }(mui, document));
14 </script>

 

自定義事件

window.addEventListener(EventName,function(){});

EventName:事件名稱

Function(){}:時間內容

B頁面調取A頁面的自定義事件

mui.fire(webViewObj, EventName);

webViewObj: 目標頁面(類型obj)

EventName:事件名稱(類型string)

異步獲取數據

 1 Var url=” http://www.zfgo360.com/App/Home/Index”
 2 
 3 mui.ajax(url, {
 4 
 5     data: loginInfo,
 6 
 7     dataType: 'json', //服務器返回json格式數據
 8 
 9     type: 'post', //HTTP請求類型
10 
11      timeout: 10000, //超時時間設置為10秒;
12 
13      success: function(data) {
14 
15          if(data.code == 0) //登錄成功將數據存入本地
16 
17          {
18 
19          } else {
20          }
21 
22      },
23      error: function(xhr, type, errorThrown) {
24        console.log(errorThrown);
25      }
26 });

 

確認事件

 1     var btnArray = ['是','否' ];
 2     var pageurl=nowPage.getURL();
 3     $.confirm('您確定要結束當前練習?', '溫馨提示', btnArray, function(e) {
 4         if (e.index == 0) {
 5             //點擊是時觸發
 6         }
 7         else{
 8             //點擊否時觸發
 9         }
10     })

 

添加子頁面

mui.init({

    subpages:[{

      url:your-subpage-url,//子頁面HTML地址,支持本地地址和網絡地址

      id:your-subpage-id,//子頁面標志

      styles:{

        top:subpage-top-position,//子頁面頂部位置

        bottom:subpage-bottom-position,//子頁面底部位置

        width:subpage-width,//子頁面寬度,默認為100%

        height:subpage-height,//子頁面高度,默認為100%

        ......

      },

      extras:{}//額外擴展參數

    }]

  });

 

在有些情況下不能在mui.init()里添加子頁面需要在頁面加載之后添加子頁面

Var webView= plus.webview.currentWebview();//獲取當前頁

var sub = plus.webview.create(pageId, subpages[i].id, styles, extras); //創建子頁面

webView.append(sub);給當前頁添加子頁面

 

上拉刷新下拉加載

添加引用

 1 <script type="text/javascript" src="../../js/mui.pullToRefresh.js"></script>
 2 <script type="text/javascript" src="../../js/mui.pullToRefresh.material.js"></script>
 3 <script type="text/javascript">
 4     (function($, doc) {
 5         mui.init();
 6         $.plusReady(function() {
 7             Var pullToRefresh = mui("#pullrefresh").pullToRefresh({
 8                 down: {
 9                     callback: function() {
10                         //下拉刷新事件
11                         pullToRefresh.endPullDownToRefresh();//結束下拉刷新事件
12                     }
13                 },
14                 up: {
15                     callback: function() {
16                         //上拉加載事件
17                         pullToRefresh.endPullUpToRefresh();//結束上拉加載事件
18                     }
19                 }
20             });
21         });
22     }(mui, document));
23 </script>

 

點擊事件

1 document.getElementById("id").addEventListener(“tap”,function(){
2   //事件代碼
3 });
4 //或者
5 mui('#pano-list').on('tap', '.recommend-item',function(){
6   //事件代碼
7 });

 

事件觸發

使用mui.trigger()方法可以動態觸發特定DOM元素上的事件。

自動觸發按鈕的點擊事件:

 1 var btn = document.getElementById("submit");
 2 
 3 //監聽點擊事件
 4 
 5 btn.addEventListener("tap",function () {
 6 
 7   console.log("tap event trigger");
 8 
 9 });
10 
11 //觸發submit按鈕的點擊事件
12 
13 mui.trigger(btn,'tap');

 

使用Native.js實現打開頁面默認彈出軟鍵盤

 1 var nativeWebview, imm, InputMethodManager;
 2 
 3 var initNativeObjects = function() {
 4 
 5     if (mui.os.android) {
 6 
 7         var main = plus.android.runtimeMainActivity();
 8 
 9         var Context = plus.android.importClass("android.content.Context");
10 
11         InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");
12 
13         imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);
14 
15     } else {
16 
17         nativeWebview = plus.webview.currentWebview().nativeInstanceObject();
18 
19     }
20 
21 };
22 
23 var showSoftInput = function() {
24 
25     var nativeWebview = plus.webview.currentWebview().nativeInstanceObject();
26 
27     if (mui.os.android) {
28 
29         //強制當前webview獲得焦點
30 
31         plus.android.importClass(nativeWebview);
32 
33         nativeWebview.requestFocus();
34 
35         imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
36 
37     } else {
38 
39         nativeWebview.plusCallMethod({
40 
41             "setKeyboardDisplayRequiresUserAction": false
42 
43         });
44 
45     }
46 
47     setTimeout(function() {
48 
49        //此處可寫具體邏輯設置獲取焦點的input
50 
51        var inputElem = document.querySelector('input');
52 
53               inputElem.focus();
54 
55     }, 200);
56 
57 };
58 
59 mui.plusReady(function() {
60 
61     initNativeObjects();
62 
63     showSoftInput();
64 
65 });

 

 

微信支付首次支付成功,后面支付報-1錯誤

這個是簽名生成工具:

https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN

應用簽名的修改位置:

開放平台-->管理中心(頁面頂部)-->移動應用(左上角)-->點擊查看按鈕-->跳轉到應用詳情頁面,

在頁面末尾有個開發信息,然后點擊修改。

簽名修改后,要過一段時間才會生效,我過了10分鍾左右。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM