欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

uniapp使用webView工作實踐記錄

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

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

1.引入webview.js

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

APP端可以支持網(wǎng)絡(luò)網(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)聽,當(dāng)網(wǎng)頁向應(yīng)用 postMessage 時,會在特定時機(后退、組件銷毀、分享)觸發(fā)并收到消息。

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

其次網(wǎng)頁向應(yīng)用 postMessage 需要通過 wv.evalJS(``)方法,在此方法中利用uniapp的postMessage()方法向應(yīng)用發(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:設(shè)置新的JS文件后將清空之前設(shè)置的值。也就是后臺如果一直 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)這兩個方法所加文件并未生效,所以文件路徑一定要寫正確,默認(rè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() 操作應(yīng)放在監(jiān)聽 loaded 事件之后

            var currentWebview = this.$scope.$getAppWebview() //此對象相當(dāng)于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()設(shè)置樣式只能在APP端生效

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

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

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

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

解決:添加樣式層級: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ù)全屏,可以通過以下方式進行設(shè)置。

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

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

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

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

總結(jié) 

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

相關(guān)文章

  • vue3中Vant的使用及說明

    vue3中Vant的使用及說明

    這篇文章主要介紹了vue3中Vant的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue中的el-date-picker時間選擇器的使用實例詳解

    Vue中的el-date-picker時間選擇器的使用實例詳解

    el-date-picker是Element UI框架中提供的日期選擇器組件,它支持單個日期、日期范圍、時間、日期時間等多種選擇方式,本文給大家介紹Vue中的el-date-picker時間選擇器的使用,感興趣的朋友一起看看吧
    2023-10-10
  • VUE的tab頁面切換的四種方法

    VUE的tab頁面切換的四種方法

    這篇文章主要介紹了VUE的tab頁面切換的四種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • vite環(huán)境變量配置小結(jié)

    vite環(huán)境變量配置小結(jié)

    Vite環(huán)境變量配置是Vite開發(fā)環(huán)境下重要的一環(huán),它能夠根據(jù)不同的環(huán)境變量對項目進行不同的配置,使得項目更加靈活和可維護,本文就來介紹一下vite環(huán)境變量配置小結(jié),感興趣的可以了解一下
    2023-11-11
  • Vue結(jié)合后臺導(dǎo)入導(dǎo)出Excel問題詳解

    Vue結(jié)合后臺導(dǎo)入導(dǎo)出Excel問題詳解

    這篇文章主要介紹了Vue結(jié)合后臺導(dǎo)入導(dǎo)出Excel問題詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • Vue3的setup在el-tab中動態(tài)加載組件的方法

    Vue3的setup在el-tab中動態(tài)加載組件的方法

    公司某項目需求在頁面顯示的組件是根據(jù)角色變化而變化的,怎么實現(xiàn)這個效果呢,下面小編給大家介紹下Vue3的setup在el-tab中動態(tài)加載組件的方法,需要的朋友可以參考下
    2022-11-11
  • Vue3中Vite和Vue-cli的特點與區(qū)別詳解

    Vue3中Vite和Vue-cli的特點與區(qū)別詳解

    vue-cli是Vue早期推出的一款腳手架,使用webpack創(chuàng)建Vue項目,可以選擇安裝需要的各種插件,比如Vuex、VueRouter,下面這篇文章主要給大家介紹了關(guān)于Vue3中Vite和Vue-cli的特點與區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • vue 解決addRoutes多次添加路由重復(fù)的操作

    vue 解決addRoutes多次添加路由重復(fù)的操作

    這篇文章主要介紹了vue 解決addRoutes多次添加路由重復(fù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue路由切換時的左滑和右滑效果示例

    Vue路由切換時的左滑和右滑效果示例

    這篇文章主要介紹了Vue路由切換時的左滑和右滑效果,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue的生命周期鉤子與父子組件的生命周期詳解

    vue的生命周期鉤子與父子組件的生命周期詳解

    Vue的生命周期就是vue實例從創(chuàng)建到銷毀的全過程,也就是new Vue() 開始就是vue生命周期的開始。Vue 實例有?個完整的?命周期,也就是從開始創(chuàng)建、初始化數(shù)據(jù)、編譯模版、掛載Dom -> 渲染、更新 -> 渲染、卸載 等?系列過程,稱這是Vue的?命周期
    2022-08-08

最新評論