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

記一次微信小程序與webviewH5通信的踩坑記錄

 更新時(shí)間:2024年07月24日 10:40:51   作者:踩坑工程師  
uniapp開(kāi)發(fā)小程序的過(guò)程中主、分包有大小限制,隨著業(yè)務(wù)的增加,使用web-view加載H5的方式,往往純加載并不能滿(mǎn)足業(yè)務(wù)需求,這個(gè)時(shí)候就得了解小程序與H5的交互,這篇文章主要給大家介紹了關(guān)于微信小程序與webviewH5通信的踩坑記錄,需要的朋友可以參考下

背景

近期公司需要將H5網(wǎng)頁(yè)嵌入到微信小程序內(nèi),這個(gè)僅需要引入webview即可:

<web-view :src="webViewUrl"></web-view>

但對(duì)于部分同學(xué)可能需要進(jìn)一步的開(kāi)發(fā),例如二者之間數(shù)據(jù)傳輸,接下來(lái)為大家奉上自己的踩坑記錄。

 實(shí)踐

1、H5傳遞與微信小程序

首先在H5環(huán)境,我們想要與微信小程序通信,必須引入相關(guān)SDK,例如,我的微信小程序是由uniapp框架開(kāi)發(fā)的,所以通信之前,我們需要將uniapp的SDK引入到我們的H5項(xiàng)目當(dāng)中。下載地址

引用下載文件

import uni from "@/public/uni.webview.1.5.4.js";
//如果提示uni.postMessage 不是function,就在 uni.webview.1.5.4.js 里面將 uni 替換掉,如替換成 webUni(建議 查找 全選 替換)
import webUni from "@/public/uni.webview.1.5.4.js";

隨后我們便可以先檢查當(dāng)前環(huán)境

 webUni.getEnv(function(res) {
    console.log('當(dāng)前環(huán)境:' + JSON.stringify(res));
});

向小程序傳遞參數(shù)(window.postMessage)

根據(jù)官方文檔說(shuō)明,我們采用window.postMessage()

const obj= {params: "傳遞參數(shù)"}

window.postMessage({
    data: obj
});

這時(shí)需要我們?cè)趙ebview標(biāo)簽加上@message屬性,監(jiān)聽(tīng)接收參數(shù)

<template>
	<view class="">
		<web-view :src="webViewUrl" @message="handleMessage"></web-view>
	</view>
</template>
<script>
	export default {
		data() {
		  return {
		    webViewUrl: 'http://localhost:80',
		  }
		},
		methods: {
		  handleMessage(event){
		  	console.log(event.detail.data);
            //打印結(jié)果
            //data:{params: "參數(shù)示例"}
		  },
		  
		},
	}
</script>

這里要注意官方說(shuō)明!?。?/p>

所以,在H5傳遞參數(shù)的方法中,要一并觸發(fā)相關(guān)api

const obj= {params: "傳遞參數(shù)"}

window.postMessage({
    data: obj
});

//后退
webUni.navigateBack({
    delta: 1
});

//組件銷(xiāo)毀(也就是關(guān)閉頁(yè)面)
uni.redirectTo({
	url: 'test?id=1'
});
uni.reLaunch({
	url: 'test?id=1'
});
uni.switchTab({
	url: '/pages/index/index'
});

//分享
uni.share()

//根據(jù)自身情況選其一

 但在實(shí)際應(yīng)用中,我們可能不會(huì)采用這種方法,因?yàn)橄胍|發(fā)@message事件,總是要在特定時(shí)機(jī)才可以,所以我們也可以選擇更為直接的方法:路徑傳參

//在H5界面編寫(xiě)
//首先聲明參數(shù)變量
const params = {data: "Are you ok?"}

//假如我們要跳轉(zhuǎn)到小程序的login頁(yè)面,我們可以這樣做
webUni.navigateTo({
  url: `/pages/login/login?message=${params}`,
});

//在小程序編寫(xiě)
//login頁(yè)面就可以在頁(yè)面加載時(shí)接收路徑參數(shù)
onLoad(){
	const routes = getCurrentPages()
	const curParam = routes[routes.length - 1]
    const jsonString = decodeURIComponent(curParam.options.message);
	const data = JSON.parse(jsonString);
	console.log(data);
    //打印結(jié)果
    //params:{data: "Are you ok?"}
},

 這樣小程序便可以接收到H5傳遞的參數(shù)了。

2、微信小程序與H5通信

微信小程序傳遞參數(shù)給H5就相對(duì)簡(jiǎn)單了,例如我們的H5鏈接是localhost,我們就可以:

<template>
	<view class="">
		<web-view :src="webViewUrl" @message="handleMessage"></web-view>
	</view>
</template>
<script>
	export default {
		data() {
		  return {
		    webViewUrl: 'http://localhot:3000',
		  }
		},
		onShow(options) {
            //聲明要傳遞給H5的參數(shù)
            let params = {
                data: "這是要給H5的參數(shù)"
            }
			this.webViewUrl = `http://localhot:3000?${JSON.stringify(params)}`
		},
		methods: {
		  handleMessage(event){
		  	console.log(event.detail.data);
		  }
		},
	}
</script>

下面我們便可以在H5環(huán)境監(jiān)聽(tīng)url的路徑參數(shù)

// 獲取地址欄的查詢(xún)字符串(不包括URL的域名和路徑)
const queryString = new URLSearchParams(window.location.search).toString();

// 如果查詢(xún)字符串不為空,則嘗試解析它
if (queryString) {
      //首先,使用decodeURIComponent來(lái)解碼這個(gè)字符串
      const decodedString: string = decodeURIComponent(queryString);

      // 注意,這里末尾有一個(gè)'='號(hào),需要移除它
      const jsonString = decodedString.slice(0, -1);

      // 現(xiàn)在,使用JSON.parse來(lái)解析JSON字符串
      const jsonObject = JSON.parse(jsonString);
      console.log("已接收到小程序的參數(shù)",jsonObject);
}

至此,小程序與H5便實(shí)現(xiàn)了,相互通信。

總結(jié)

微信小程序與H5通信是在日常開(kāi)發(fā)中總會(huì)遇到的場(chǎng)景,我第一次接觸的時(shí)候,由于沒(méi)有經(jīng)驗(yàn),走了不少?gòu)澛罚栽谶@里分享一下自己的經(jīng)驗(yàn),希望能幫助到正在學(xué)習(xí)的同學(xué)

到此這篇關(guān)于微信小程序與webviewH5通信踩坑的文章就介紹到這了,更多相關(guān)微信小程序與webviewH5通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue中路由的使用方法實(shí)例詳解

    Vue中路由的使用方法實(shí)例詳解

    本文為大家介紹Vue中路由的使用方法,包括安裝路由創(chuàng)建路由并導(dǎo)出以及在應(yīng)用實(shí)例中使用vue-router的相關(guān)知識(shí),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-02-02
  • vue3發(fā)送驗(yàn)證碼倒計(jì)時(shí)功能的實(shí)現(xiàn)(防止連點(diǎn)、封裝復(fù)用)

    vue3發(fā)送驗(yàn)證碼倒計(jì)時(shí)功能的實(shí)現(xiàn)(防止連點(diǎn)、封裝復(fù)用)

    這篇文章主要介紹了vue3發(fā)送驗(yàn)證碼倒計(jì)時(shí)功能的實(shí)現(xiàn)(防止連點(diǎn)、封裝復(fù)用),實(shí)現(xiàn)思路是點(diǎn)擊發(fā)送驗(yàn)證碼,驗(yàn)證碼倒計(jì)時(shí),校驗(yàn)手機(jī)號(hào)是否正常等一系列操作,本文通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • VUE入門(mén)學(xué)習(xí)之事件處理

    VUE入門(mén)學(xué)習(xí)之事件處理

    這篇文章主要介紹了vue事件處理原理及過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-10-10
  • Vue 2.0 偵聽(tīng)器 watch屬性代碼詳解

    Vue 2.0 偵聽(tīng)器 watch屬性代碼詳解

    這篇文章主要介紹了Vue 2.0 偵聽(tīng)器 watch屬性代碼詳解,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-06-06
  • vue實(shí)現(xiàn)頁(yè)面切換滑動(dòng)效果

    vue實(shí)現(xiàn)頁(yè)面切換滑動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)頁(yè)面切換滑動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Vue項(xiàng)目中缺少明顯入口文件的原因及解決策略

    Vue項(xiàng)目中缺少明顯入口文件的原因及解決策略

    本文探討了Vue項(xiàng)目中缺少明顯入口文件的原因,并提供了解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • vue路由嵌套的SPA實(shí)現(xiàn)步驟

    vue路由嵌套的SPA實(shí)現(xiàn)步驟

    這篇文章主要為大家詳細(xì)介紹了vue路由嵌套的SPA實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • vue el-form-item如何添加icon和tooltip

    vue el-form-item如何添加icon和tooltip

    這篇文章主要介紹了vue el-form-item如何添加icon和tooltip問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue自定義標(biāo)簽和單頁(yè)面多路由的實(shí)現(xiàn)代碼

    vue自定義標(biāo)簽和單頁(yè)面多路由的實(shí)現(xiàn)代碼

    這篇文章主要介紹了vue自定義標(biāo)簽和單頁(yè)面多路由的實(shí)現(xiàn)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 淺析Vue如何巧用computed計(jì)算屬性

    淺析Vue如何巧用computed計(jì)算屬性

    在日常使用Vue開(kāi)發(fā)項(xiàng)目的時(shí)候,計(jì)算屬性computed是一個(gè)非常常用的特性,本文就來(lái)分享一些使用Vue的computed計(jì)算屬性時(shí)的一些小技巧,希望能夠幫助到大家
    2023-06-06

最新評(píng)論