WeChat アプレットは Webview H5 と対話します (埋め込まれた H5 はネイティブ ページにジャンプします)

開発では、Web ビュー コンポーネントを使用して H5 ページを埋め込むのが非常に一般的ですが、多くの人は、Web ビューに埋め込まれた H5 がネイティブ アプレットとどのように対話するかを知りません。以下に、WeChat アプレットと Webview H5 間の対話を実装する方法を紹介します。

Webビュー機能の説明

Web ページをホストするためのコンテナ。ミニ プログラム ページ全体が自動的に埋められ、個人用ミニ プログラムは当面サポートされません。

クライアント バージョン 6.7.2 以降、navigationStyle:custom は Web ビュー コンポーネントでは無効です。

ここに画像の説明を挿入します

Web ビューには H5 が埋め込まれ、パラメータをネイティブ アプレットに渡します

方法 1. postMessage を使用する

Web ビュー コンポーネントには「bindmessage」属性があり、次のように公式に導入されています。

Web ページがミニ プログラムにメッセージを投稿すると、ミニ プログラムがトリガーされ、特定の時間 (ミニ プログラムの撤退、コンポーネントの破棄、共有) にメッセージを受信します。e.detail = {data}、データは複数の postMessage パラメータで構成される配列です

「メッセージ」イベントをWebビューコンポーネントにバインドします。

ミニ プログラムで H5 によって渡されたデータを受信するには、H5 でメッセージ イベントをトリガーします。

例:

アプレット/ページ/テスト/test.wxml:

<web-view src="" bindmessage="receiveMessage"></web-view>

アプレット/ページ/テスト/test.js:

receiveMessage(e){
    
    
	console.log(e.detail)//接收H5传过来的数据
}

H5:

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
wx.miniProgram.postMessage({
      
       data: {
      
      foo: 'bar'} })
</script>

ミニプログラムとH5間の通信にはPostMessageを利用することができますが、ミニプログラムが撤退、コンポーネントが破棄、共有された場合にのみ起動されるため、場合によっては開発ニーズを満たせない場合があります。

方法 2: パラメーターを指定してページ ジャンプを使用する

jweixin JSSDK を参照し、WeChat wx.miniProgram API を呼び出します。

インターフェース名 説明する 最小バージョン
wx.miniProgram.navigateTo パラメータはアプレットのインターフェースと一致しています 1.6.4
wx.miniProgram.navigateBack パラメータはアプレットのインターフェースと一致しています 1.6.4
wx.miniProgram.switchTab パラメータはアプレットのインターフェースと一致しています 1.6.5
wx.miniProgram.reLaunch パラメータはアプレットのインターフェースと一致しています 1.6.5
wx.miniProgram.redirectTo パラメータはアプレットのインターフェースと一致しています 1.6.5
wx.miniProgram.postMessage アプレットにメッセージを送信すると、特定の時間にコンポーネントのメッセージ イベントがトリガーされます (アプレットのバック、コンポーネントの破棄、共有)。 1.7.1
wx.miniProgram.getEnv 現在の環境を取得する 1.7.1

たとえば、現在シナリオがあります。H5 はリスト ページで、リスト項目をクリックすると、ネイティブ アプレットの詳細ページにジャンプします。

H5:

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
function handleClick(e){
      
      
	let id = e.target.dataset.id
	let url = `/pages/detail/detail?id=${ 
        id}`;
	wx.miniProgram.navigateTo({
      
      
      url,
    });
}
</script>

アプレット/pages/detail/detail.js:

onLoad: function (options) {
    
    
	console.log(options.id)//接收H5传过来的数据
}

Web ビューに H5 パラメータを埋め込むネイティブ アプレット

ネイティブ アプレットが Web ビューに H5 パラメータを埋め込むのは非常に簡単で、ネイティブ アプレットは Web ビューの src 属性を直接変更できます。

'xxx.com?arg=123'

h5 ページは URL のパラメータを取得します。このメソッドにより、ページが再読み込みされます。ページを読み込みたくない場合は、ハッシュを変更できます。

'xxx.com#123'

H5 ページはハッシュ値の変化を監視します。

window.onhashchange=function(){
    
    
    alert('hash值改变')
    console.log(window.location.hash)//获取当前hash值
}

おすすめ

転載: blog.csdn.net/weixin_44646763/article/details/127014002