webview簡介(一)


初次使用webview,有很多地方不懂的,在此做下記錄,留待以后學習!

  以前沒有接觸過APP開發,對webview一直懵懵懂懂,也不敢使用。這次逼不得已必須要去使用就認真的學習了下,發現也並不是很難理解。

  在Html5plus的官方文檔中關於webview的方法並不多,共有如下幾個

  all    獲取所有webview窗口

  close    關閉webview窗口

  create  創建新的webview窗口

  currentWebview  獲取當前窗口的webviewObject對象(這個對象很重要!!)

  getWebviewById  查找指定表示的webviewObject窗口

  hide    隱藏webview窗口

  open     創建並打開webview窗口

  show      顯示webview窗口

關於方法的介紹在此不做贅述,文檔中寫的比較清楚,主要通過本人的兩個小測試程序來講解,代碼如下

此為index.html 是應用進入的第一個頁面

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4     <meta charset="utf-8">
 5     <title>Webview Example</title>
 6     <script src='js/jQuery.js'></script>
 7     <script type="text/javascript">
 8     // H5 plus事件處理
 9 document.addEventListener("plusready",function (){
10     $('#create').click(function (){
11         setTimeout(function (){
12             alert('開始創建');
13             var newWsObj = plus.webview.create('test.html','test',{},{myVar:'我的值'});
14             newWsObj.show();                
15         }, 1000);        
16     });
17 
18     $('#show').click(function (){
19         // 顯示test窗口
20         alert('現在顯示test窗口,當index窗口第二次出現時test窗口是已經創建了並隱藏起來的');
21         // 顯示並不是刷新 test窗口上的plusready事件中的代碼是不會執行的
22         plus.webview.show('test');
23     })
24 });
25 
26     </script>
27     </head>
28     <body>
29         <button id='create'>創建一個新的webview並顯示</button>
30         <button id='show'>顯示test</button>
31     </body>
32 </html>

此為test.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
        <script type="text/javascript" src="js/jQuery.js" ></script>
    <script type="text/javascript">
    // H5 plus事件處理
    document.addEventListener("plusready",function (){
        // 獲得應用首頁的窗口對象
        var ws = plus.webview.getLaunchWebview();
        alert('應用首頁webview:'+ws.getURL());
        // 獲得當前創建對象
        var cur = plus.webview.currentWebview();
        alert('當前窗口對象:'+cur.getURL());
        alert('當前窗口對象的值:'+cur.myVar);
        // 輸出當前所有的窗口對象
        var wsObjArr = plus.webview.all();
        for (var i in wsObjArr) {
            alert(i+':'+wsObjArr[i].getURL());
        }
        // 隱藏當前webview對象
        alert('1秒后隱藏該webview');
        setTimeout(function(){
            plus.webview.hide(cur);
        },1000);
        
        
    });
    </script>
    </head>
    <body>
        我是新的webview
    </body>
</html>

當進入應用時,如果點擊“顯示test”是不會有效果的,因為我們還沒有創建test窗口,我們需要利用create()方法創建並用show()方法顯示出來。open()方法類似於同時執行create()和show()。我們在創建test窗口時傳遞了一個額外的參數"myVar",通過這種方式以后可以很容易的在窗口之間傳遞參數而不需要通過get方式來傳遞。

創建並顯示test窗口后會依次alert出首頁的窗口url(感覺首頁的窗口與通過plus.webview.getWebviewById( plus.runtime.appid )獲得的應用入口窗口應該是指的同一個窗口,至少我測試是一樣的),當前窗口對象(即test窗口),以及通過在index窗口通過create傳遞過來的myVar,然后就是所有窗口的輸出,第一個窗口是indx窗口,然后再是test窗口。最后調用hide()方法隱藏test窗口,當test窗口被隱藏后,在其下面的index窗口就顯現出來的。新建並顯示一個窗口類似於在一張紙上蓋上另外一張紙,會遮住一開始的那張紙,我們只能看到新的那張放在上面的紙。而當我們把上面的值拿開(隱藏)后,原來的那張紙就又出現了。當我們第二次來到index窗口時再點擊“顯示test”就會再次顯示出test窗口,這就相當於我們又把第二張紙蓋在了第一張紙上面,第一張紙又被隱藏了。但是注意,此時test窗口中的代碼並不會再執行一次,因為在我們創建並顯示test窗口時,這些代碼已經執行過了,我們隱藏和顯示test窗口並不是關閉它,只是暫時把它“拿開”了!還有一點很重要的是:一個靜態頁可以創建多個窗口!個人認為靜態頁與窗口的關系是一對多的關系。

 


免責聲明!

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



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