最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

uniapp使用webView工作實踐記錄

 更新時間:2024年06月12日 09:47:34   作者:我們仰望同一片星空  
uni-app中的web-view是一個web瀏覽器組件,可以用來承載網(wǎng)頁的容器,下面這篇文章主要給大家介紹了關(guān)于uniapp使用webView的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、建立APP頁面和webview的通訊

1.引入webview.js

App 端使用 uni.web-view.js 的最低版為 uni.webview.1.5.4.js

APP端可以支持網(wǎng)絡網(wǎng)頁和本地網(wǎng)頁,但如果使用本地網(wǎng)頁和相關(guān)資源(js、css等文件)必須放在 static 目錄下。 

2.引入搭橋document.addEventListener('UniAppJSBridgeReady',function(){})

在app端是識別不到document元素的,所以為了適配app,需要將搭橋的方法單獨建立一個js文件放到 static 目錄下

document.addEventListener('UniAppJSBridgeReady', function () {
	console.log('我建立起了通訊');
	uni.postMessage({
		data: {
			successFlag: true,
		}
	});
})

3.發(fā)送消息

首先<web-view>中需要添加message的監(jiān)聽,當網(wǎng)頁向應用 postMessage 時,會在特定時機(后退、組件銷毀、分享)觸發(fā)并收到消息。

<web-view ref="webview" :src="webViewUrl" @message="onPostMessage"></web-view>

其次網(wǎng)頁向應用 postMessage 需要通過 wv.evalJS(``)方法,在此方法中利用uniapp的postMessage()方法向應用發(fā)送消息

wv.evalJS(`uni.postMessage({
					data: {
					  base64: canvas.toDataURL("image/png"),
					}
				});	`)

最后在uniapp通過 onPostMessage 函數(shù)中獲取網(wǎng)頁信息

onPostMessage: function (e) {
				console.log(e.detail.data[0])
			},

 二、webview初始化遇坑

1.setJsFile() 和 appendJsFile() 方法的區(qū)別

在初始化webview時,需要引入webview.js文件和添加的搭橋 js (post.js)文件 

此時需注意 setJsFile() 和 appendJsFile() 方法的區(qū)別:

setJsFile:設置新的JS文件后將清空之前設置的值。也就是后臺如果一直 setJsFile,那么只有最后一個js文件生效。

appendJsFile:添加多個js文件將按照添加的先后順序執(zhí)行。

2. 文件路徑

setJsFile() 和 appendJsFile()方法中所寫的文件路徑一定要正確

如果文件路徑從static目錄開始寫,比如這樣:

wv.setJsFile("static/uni.webview.1.5.5.js")
wv.appendJsFile("static/post.js")

這樣寫在安卓端沒有問題,運行很順利,但是在 IOS 端就會發(fā)現(xiàn)這兩個方法所加文件并未生效,所以文件路徑一定要寫正確,默認帶上'_www',

wv.setJsFile("_www/static/uni.webview.1.5.5.js")
wv.appendJsFile("_www/static/post.js")

3. setJsFile() 和 appendJsFile()方法所寫時機

在渲染時寫 setJsFile() 和 appendJsFile()方法,在安卓端不會有任何問題,但在IOS端會發(fā)現(xiàn)這兩個方法并未生效

因此建議在 IOS 端  setJsFile() 和 appendJsFile() 操作應放在監(jiān)聽 loaded 事件之后

            var currentWebview = this.$scope.$getAppWebview() //此對象相當于html5plus里的plus.webview.currentWebview()。在uni-app里vue頁面直接使用plus.webview.currentWebview()無效
			this.wv = currentWebview.children()[0]

			this.wv.addEventListener("loaded", () => {
			    this.wv.setJsFile("_www/static/uni.webview.1.5.5.js")
			    this.wv.appendJsFile("_www/static/post.js")
			    console.log('加載完成');
			    this.getImg() // 加載完成后獲取一次驗證碼圖片,但可能獲取為空
			}, false);
			

4.setStyle()設置樣式只能在APP端生效

只有app可以設置webview的寬高,其他的端是無解的

利用節(jié)點信息減去其他內(nèi)容的高度,得到webview的高度,this.scope.scope.scope.getAppWebview()獲取webview實例(只能app使用),再修改實例setStyle設置。

5.層級問題(事件不觸發(fā))

在uniapp使用webview時,需要注意樣式層級問題,如下代碼,若在當前頁面使用了webview,則點擊時不會觸發(fā)點擊事件,原因就是webview顯示層級高于當前頁面

解決:添加樣式層級:z-index: 999;

        <view class="privacy">
				<view @click="toPrivacy('user')"><u--text text="機電用戶協(xié)議" size="12"></u--text></view>、
				<view @click="toPrivacy('privacy')"><u--text text="隱私協(xié)議" size="12"></u--text></view>
		</view>

附:uniapp使用webview不占全屏

在uniapp中使用webview時,如果不希望webview占據(jù)全屏,可以通過以下方式進行設置。

  • 在uniapp的頁面中,可以使用flex布局來控制webview所占的比例。設置一個容器div,并給其設置寬度、高度及display屬性為flex。然后將webview放置在這個容器中,可以通過設置容器的flex屬性來控制webview的占比。

  • 另一種方式是使用css樣式來控制webview的寬高以及位置。在uniapp頁面的style標簽中,可以給webview設置具體的寬度、高度以及margin、padding屬性來調(diào)整其位置和大小。

通過以上兩種方式,可以調(diào)整webview的尺寸,使其不占滿整個屏幕??梢愿鶕?jù)實際需要,靈活運用這些方法,來適配不同的頁面布局需求。

需要注意的是,uniapp中的webview組件在不同平臺上的表現(xiàn)可能會有所不同,因此還需要根據(jù)目標平臺進行適當?shù)恼{(diào)整。

總結(jié) 

到此這篇關(guān)于uniapp使用webView的文章就介紹到這了,更多相關(guān)uniapp使用webView內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解在vue-cli中使用graphql即vue-apollo的用法

    詳解在vue-cli中使用graphql即vue-apollo的用法

    這篇文章主要介紹了詳解在vue-cli中使用graphql即vue-apollo的用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • vue-drag-chart 拖動/縮放圖表組件的實例代碼

    vue-drag-chart 拖動/縮放圖表組件的實例代碼

    這篇文章主要介紹了vue-drag-chart 拖動/縮放的圖表組件的實例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • vue+element-ui表格自定義列模版的實現(xiàn)

    vue+element-ui表格自定義列模版的實現(xiàn)

    本文主要介紹了vue+element-ui表格自定義列模版的實現(xiàn),通過插槽完美解決了element-ui表格自定義列模版的問題,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Element基于el-input數(shù)字范圍輸入框的實現(xiàn)

    Element基于el-input數(shù)字范圍輸入框的實現(xiàn)

    本文主要介紹了?Element基于el-input數(shù)字范圍輸入框的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Vue計算屬性中reduce方法實現(xiàn)遍歷方式

    Vue計算屬性中reduce方法實現(xiàn)遍歷方式

    這篇文章主要介紹了Vue計算屬性中reduce方法實現(xiàn)遍歷方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • vue.js實現(xiàn)數(shù)據(jù)庫的JSON數(shù)據(jù)輸出渲染到html頁面功能示例

    vue.js實現(xiàn)數(shù)據(jù)庫的JSON數(shù)據(jù)輸出渲染到html頁面功能示例

    這篇文章主要介紹了vue.js實現(xiàn)數(shù)據(jù)庫的JSON數(shù)據(jù)輸出渲染到html頁面功能,結(jié)合實例形式分析了vue.js針對本地json數(shù)據(jù)的讀取、遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • 在vue中實現(xiàn)antd的動態(tài)主題的代碼示例

    在vue中實現(xiàn)antd的動態(tài)主題的代碼示例

    在需求開發(fā)階段,鑒于項目采用了antd作為基礎組件庫,確保組件外觀與antd一致變得尤為重要,這包括顏色、字體大小及尺寸等樣式的統(tǒng)一,然而,截至當前antd-vue尚未實現(xiàn)這一便捷的CSS變量特性,但理解其背后的實現(xiàn)機制后,我們可以自行構(gòu)建這一功能,需要的朋友可以參考下
    2024-07-07
  • vue 導出文件,攜帶請求頭token操作

    vue 導出文件,攜帶請求頭token操作

    這篇文章主要介紹了vue 導出文件,攜帶請求頭token操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue使用lottie-web實現(xiàn)web動畫效果

    vue使用lottie-web實現(xiàn)web動畫效果

    在web端,lottie-web庫可以解析導出的動畫json文件,并將其以svg或者canvas的方式將動畫繪制在我們的頁面上,這篇文章主要介紹了vue使用lottie-web實現(xiàn)web動畫,需要的朋友可以參考下
    2024-06-06
  • 詳解利用jsx寫vue組件的方法示例

    詳解利用jsx寫vue組件的方法示例

    這篇文章主要給大家介紹了關(guān)于利用jsx寫vue組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編來一起看看吧。
    2017-07-07

最新評論

土默特左旗| 太保市| 开远市| 田东县| 辽阳市| 祁连县| 仁寿县| 阿瓦提县| 宣汉县| 黑龙江省| 巴彦淖尔市| 滕州市| 彭山县| 雷州市| 昆明市| 监利县| 湖北省| 鄢陵县| 大渡口区| 洛宁县| 光泽县| 云梦县| 上林县| 新宁县| 无锡市| 墨竹工卡县| 湄潭县| 浦东新区| 炎陵县| 清河县| 古蔺县| 塔河县| 姚安县| 依兰县| 芦山县| 大名县| 广丰县| 张家港市| 雅江县| 徐水县| 沂南县|