mui開發app之webview是什麼

2022-09-17 05:42:12 字數 3941 閱讀 1031

webview(網路檢視)能載入顯示網頁,可以將其視為乙個瀏覽器。

在android手機中,網頁的解析和顯示網頁的能力是由webkit核心實現的。

(如chrome瀏覽器使用的是webkit核心,現在,webkit被內建到了android系統中)

webview對網頁處理也是交給強大的webkit做的

webview在androidsdk(原生)中:

可以理解為:android開發中的乙個activity裡使用了webview元件,並開啟了乙個html頁面呈現給使用者。

在mui開發中,這些webview就是一張一張的網頁。

這些網頁是webview物件,其操作方法被封裝在html5+的plus.webview物件中

webview本身只是個瀏覽器效果元件,切換即使網頁之間的跳轉,理論上不可能像原生的activity中切換一樣流暢,本身也不會有什麼動畫。

關於dcloud的html5+和native.js技術請看我另一篇部落格:

關於原生android webview這個元件使用的部落格:

簡約圖:

原生開發和mui的hybrid模式區別圖:

先來談談我對mui的webview的理解:

我們按照傳統網頁的方式去理解:

,將webview理解為瀏覽器下不同標籤tab,每乙個tab也是乙個不同的頁面

場景一:

^_^)

場景二:

瀏覽器已經有了首頁的tab,我們新建更多tab,瀏覽更多頁面,並且跳轉到這些新tab下

這就像使用mui.openwindow()方法開啟新的webview,該方法傳入一些引數,如下官方說法:

mui.openwindow(,

extras:,

createnew:

false,//

是否重複建立同樣id的webview,預設為false:不重複建立,直接顯示

show:,

waiting:}})

openwindow開啟了乙個新的webview並且跳轉到了新的webview,就像瀏覽器新建乙個tab並且切換過去,只不過切換過程帶了引數,實現了動畫(這由native.js交給了原生動畫實現的),傳遞頁面引數,這也是比瀏覽器訪問網頁的強大之處

openwindow遇到已經開啟過並且id仍然在快取中的webview(這些webview通常是被hide()掉的),會直接跳轉過去,相當於getwebviewbyid().show()

openwindow有兩個核心引數,乙個是url表示開啟的html檔案,開啟tab也得知道網頁位址對吧?還乙個是id,這個引數相當於控制代碼,以後尋找這個webview就靠它了,使用getwebviewbyid()方法抓到這個webview並進行操作!

請注意:openwindow下有乙個特殊的引數:createnew

如果它為false,使用openwindow開啟新視窗的時候,會先判斷是不是有一樣id的webview,如果有,直接跳過去,沒有的話,就新建乙個視窗再跳過去!

請盡量不要使用createnew,除非特殊的頁面需要建立重複的多個。

注:我遇到過建立了重複的webview後造成的自定義觸發事件(fire)發生了意想不到的結果,在返回前,對返回頁面的dom進行修改重新整理,但dom並沒有被改變,其實是因為重複webview,修改了別的!

場景三:

我要關閉乙個頁面!

方法一:隱藏掉(非真關閉),這樣會暫時從當前webview切出去,返回上乙個webview,但是這樣不會清除這個webview,webview依然儲存在快取中。

此種方法用於不需要反覆重新整理建立的頁面,開啟一次後長時間駐留在記憶體中的webview,使用plus.webview.getwebviewbyid().hide()隱藏,同理使用show()方法再次喚出這個webview

此種方法開啟webview下的html是不會重新執行一遍js,也不會再次渲染css了。一般採用自定義事件監聽,然後觸發相應的js。

就是說mui.back()將會關閉當前的webview後返回上乙個webview,此時我們如果使用plus.webview.getwebviewbyid()獲取那個被返回的webview已經是查詢不到,因為webview被關閉了,快取也消失了。

方法三:不要返回,而要關閉指定的乙個webview,那使用plus.webview.getwebviewbyid().close()即可,這是不帶返回效果的關閉某個頁面。

比如關閉當前的頁面,plus.webview.currentwebview().close(),這個方法的效果會和mui.back()一樣。

方法四:直接清理掉,清理掉的話將會導致頁面跳轉不產生動畫或者顯示載入中,因為頁面將被認為從未開啟過,使用:plus.webview.getwebviewbyid().clear()

終極關閉**:假設我設定的主頁是login.html,現在我的使用者退出了登陸,那麼我要清空他已經開啟的所有webview,不留使用痕跡,使用如下**:

tologin = function

()

//立刻退出

settimeout(function

() , 0);

}

場景四:開啟已經開啟過並且沒有被close或者clear的webview:

使用:plus.webview.getwebviewbyid().show()

使用:plus.webview.getwebviewbyid().hide()  //隱藏掉

總結一下webview!

mui提供的plus物件封裝了對webview的操作,hbuilder中輸入plus.webview即可獲取物件下面的變數

下面有三個get方法獲取webview:

分別獲取:基座(就是首頁),當前頂部頁面(其實就是當前顯示的),根據id獲得webview

返回的是webviewobject,這個object下面有:

等等的方法,自行在hbuilder中檢視吧!

體驗使用MUI上手練習app頁面開發

這就是mh就可以完成的內容 做個記錄 快捷鍵實在有點多。不得不說hbuilder是真的好用呀,體驗感賊好,前端執行起來也是很快,直接啟動鏈結模擬器就ok了,舒服。開發文件對於新人來說還是有點難度,看了小半上午對於js在mui中的運用還是雲裡霧裡,不過自己js確實很菜。最後簡單實現了一下csdn上的 ...

Hbuilder app 開發 之 MUI個別細節

1.自定義事件傳值 在列表頁面用mui.fire啟用自定義事件 id id fire target event data target type webviewobject 需傳值的目標webview event type string 自定義事件名稱 data type json json格式的資...

控制項縮小android控制項之WebView

工作之餘抽點時間出來寫寫博文,希望對新接觸的朋友有幫助。今天在這裡和大家一起學習一下控制項縮小 發現這個控制項挺好用,能自已控制進度條,而且這個控制項的功能非常壯大,後續再另說 先上個簡單的 每日一道理 青春是用意志的血滴和拼搏的汗水釀成的瓊漿 歷久彌香 青春是用不凋的希望和不滅的嚮往編織的彩虹 絢...