【工作實踐-06】uniapp使用webView

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

? ? ? ? 1.引入webview.js

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

? ? ? ? ? ? ? ? APP端可以支持網絡網頁和本地網頁,但如果使用本地網頁和相關資源(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.發送消息

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

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

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

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

? ? ? ? ? ? ? ? 最后在uniapp通過?onPostMessage 函數中獲取網頁信息

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

?二、webview初始化遇坑

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

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

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

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

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

? ? ? ? 2. 文件路徑

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

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

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

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

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

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

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

? ? ? ? ? ? ? ? 因此建議在 IOS 端??setJsFile() 和?appendJsFile() 操作應放在監聽 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的寬高,其他的端是無解的

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

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

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

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

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/714392.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/714392.shtml
英文地址,請注明出處:http://en.pswp.cn/news/714392.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PostgreSQL中int類型達到上限的一些處理方案

使用int類型作為表的主鍵在pg中是很常見的情況&#xff0c;但是pg中int類型的范圍在-2147483648到2147483647&#xff0c;最大只有21億&#xff0c;這個在一些大表中很容易就會達到上限。一旦達到上限&#xff0c;那么表中便沒辦法在插入數據了&#xff0c;這個將會是很嚴重的問…

【react native】css踩坑記錄

1、IOS上面opacity重疊失效 在 iOS 上&#xff0c;當兩個具有相同背景色的元素重疊時&#xff0c;不透明度&#xff08;opacity&#xff09;較低的元素會顯示在較高的元素上方。 所以考慮使用rgba的形式。 // 對于下面這種寫法&#xff0c;如果存在container和activeIndicat…

word文檔空格不能有下劃線【筆記】

word文檔空格不能有下劃線 2024-3-1 21:20:24 推薦 word下劃線打不出來了&#xff0c;是怎么回事&#xff1f; 問題 字后面打不出來下劃線 操作 1.點擊文件 左上角&#xff0c;點擊“文件”。 2.點擊選項 鼠標下滑&#xff0c;點擊“選項”。 3.點擊常規與保存 點擊“…

java基礎-mysql

文章目錄 mysql基礎面試題什么是mysql什么是事務并發事務帶來的影響事物的隔離級別索引大表優化什么是池化思想&#xff0c;什么是數據庫連接池&#xff0c;為什么要用數據庫連接池?鎖&#xff0c;表鎖&#xff1b;樂觀鎖&#xff0c;悲觀鎖MySQL主備同步的基本原理SQL什么情況…

[⑥5G NR]: 無線接口協議,信道映射學習

5G系統整體包括核心網、接入網以及終端部分&#xff0c;接入網與終端間通過無線空口協議棧進行連接。無線接口可分為三個協議層&#xff1a;物理層&#xff08;L1&#xff09;、數據鏈路層&#xff08;L2&#xff09;和網絡層&#xff08;L3&#xff09;。 L1&#xff1a;物理…

【python】json轉成成yaml中文編碼異常顯示成:\u5317\u4EAC\u8DEF123\u53F7

姊妹篇&#xff1a;【python】json轉成成yaml json數據 {"name": "張三","age": 30,"isMarried": false,"children": [{"name": "小王","age": 5},{"name": "小李",&qu…

mysql冷備

數據庫備份類型 冷備份&#xff1a;在數據庫停止服務的情況下進行備份 熱備份&#xff1a;在數據庫處于運行狀態下進行備份 溫備份&#xff1a;不可寫但可讀的情況下進行備份 冷備分時&#xff0c;只需要在停止數據庫后&#xff0c;拷貝數據目錄到另一個地方即可。 mysql 啟…

為什么不能啟動游戲錯誤代碼126 加載bugreportnew.dll失敗

錯誤代碼126通常表示在嘗試加載某個動態鏈接庫&#xff08;DLL&#xff09;文件時出現了問題。在您提到的例子中&#xff0c;bugreportnew.dll 文件未能成功加載&#xff0c;這可能是由于以下幾個原因&#xff1a; 騰訊云2024新春采購節優惠活動入口&#xff1a;https://curl.q…

Linux---進程信號

一、信號的概念 信號是一種向目標進程發送通知消息的機制 信號的特性(可以結合紅綠燈、防空警報等生活樣例來理解) 1、在信號沒有出現之前&#xff0c;我們就已經知道如何去處理信號&#xff0c;即我們認識信號 2、信號是異步產生的&#xff0c;即我們不知道它具體何時產生 3、…

基于MQTT協議實現微服務架構事件總線

一、場景描述 昨天在博客《客戶端訂閱服務端事件的實現方法》中提出了利用websocket、服務端EventEmitter和客戶端mitt實現客戶端訂閱服務端事件&#xff0c;大大簡化了客戶端對服務端數據實時響應的邏輯。上述方案適用于單服務節點的情形。 對于由服務集群支撐的微服務架構&…

Redis 之七:穿透、擊穿、雪崩

&#xff08;本內容部分來自知乎網等網絡&#xff09; Redis 緩存的使用&#xff0c;極大的提升了應用程序的性能和效率&#xff0c;特別是數據查詢方面。但同時&#xff0c;它也帶來了一些問題。其中&#xff0c;最要害的問題&#xff0c;就是數據的一致性問題&#xff0c;從嚴…

Educational Codeforces Round 132 (Rated for Div. 2) E. XOR Tree(啟發式合并+貪心)

題目 n(n<2e5)個點的樹&#xff0c;點i權值ai&#xff08;1<ai<2^30&#xff09; 修改最少的點的權值&#xff0c;使得樹上不存在異或和為0的簡單路徑&#xff0c;輸出最少的點數 權值可以被修改成任意正整數&#xff08;可以是無限大&#xff09; 思路來源 官方…

【leetcode】環形鏈表?環形鏈表II

大家好&#xff0c;我是蘇貝&#xff0c;本篇博客帶大家刷題&#xff0c;如果你覺得我寫的還不錯的話&#xff0c;可以給我一個贊&#x1f44d;嗎&#xff0c;感謝?? 目錄 1.環形鏈表解題拓展&#xff1a; 2.環形鏈表II 1.環形鏈表 點擊查看題目 解題 思路: bool hasCycle…

【算法集訓】基礎算法:基礎排序 - 插入排序

一、基本理解 插入排序(nsertion Sort)&#xff0c;一般也被稱為直接插入排序&#xff0c;是一種簡單直觀的排序算法。 **工作原理&#xff1a;**將待排列元素劃分為「已排序」和「未排序」兩部分&#xff0c;每次從「未排序的」元素中選 擇一個插入到「已排序的」元素中的正確…

劍指offer58—II 左旋轉字符串 c++

題目 字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數實現字符串左旋轉操作的功能。比如,輸入字符串"abcdefg"和數字2,該函數將返回左旋轉兩位得到的結果"cdefgab"。 示例 1: 輸入: s = “abcdefg”, k = 2 輸出: “…

MySQL 多表查詢 連接查詢 內連接

介紹 內連接查詢是兩張表中交集的部分 連接模式 隱式內連接 SELECT 字段列表 FROM 表1,表2 WHERE 條件顯式內連接 SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 連接條件案例 有兩張表一個表為學生表&#xff0c;另一個表為班級表&#xff0c;現在需要查詢學生時候在查…

接口測試(全)

&#x1f345; 視頻學習&#xff1a;文末有免費的配套視頻可觀看 &#x1f345; 關注公眾號【互聯網雜貨鋪】&#xff0c;回復 1 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 大多數人對于接口測試都覺得是一種高大上的測試&#xff0c;覺得…

羊大師分析,羊奶粉適合什么樣的人群喝

羊大師分析&#xff0c;羊奶粉適合什么樣的人群喝 羊奶粉適合多種人群食用&#xff0c;包括兒童、老年人、孕婦以及身體虛弱或處于疾病康復期的人群。 對于兒童來說&#xff0c;羊奶粉是一種很好的營養品。它含有豐富的蛋白質、脂肪、礦物質和維生素&#xff0c;能夠滿足兒童…

【前端素材】推薦優質后臺管理系統網頁Star admin平臺模板(附源碼)

一、需求分析 1、系統定義 后臺管理系統是一種用于管理和控制網站、應用程序或系統的管理界面。它通常被設計用來讓網站或應用程序的管理員或運營人員管理內容、用戶、數據以及其他相關功能。后臺管理系統是一種用于管理網站、應用程序或系統的工具&#xff0c;通常由管理員使…

三種圖片預覽插件viewer、vue-photo-preview、vue-picture-preview

第一種&#xff1a;viewerjs使用介紹 1、先安裝依賴 npm install v-viewer --save2、main.js內引用并注冊調用 //main.js import Viewer from ‘v-viewer’ import ‘viewerjs/dist/viewer.css’ Vue.use(Viewer); Viewer.setDefaults({ Options: { “inline”: true, “butt…