返回

钉钉小程序web-view内嵌H5页面并实现通信

前端

钉钉页面引入H5页面

在钉钉小程序中引入H5页面,需要使用<web-view>标签。<web-view>标签的src属性指定H5页面的URL,style属性指定H5页面的样式。

<web-view src="https://example.com/h5/" style="width: 100%; height: 100%;"></web-view>

H5页面向钉钉发送消息

H5页面可以通过钉钉JSAPI向钉钉发送消息。钉钉JSAPI提供了多种方法,可以用于发送不同类型的数据。例如,可以使用钉钉JSAPI钉钉.ready()方法发送文本消息。

钉钉.ready(function() {
  钉钉.runtime.postMessage({
    text: 'hello钉钉'
  });
});

钉钉页面向H5发送消息

钉钉页面可以通过钉钉JSSDK向H5页面发送消息。钉钉JSSDK也提供了多种方法,可以用于发送不同类型的数据。例如,可以使用钉钉JSSDK钉钉.webView.postMessage()方法发送文本消息。

钉钉.webView.postMessage({
  text: 'hello H5'
});

实现双向通信

通过以上方法,可以实现钉钉小程序和H5页面之间的双向通信。

在H5页面中,可以使用addEventListener()方法监听钉钉发送的消息。

addEventListener('message', function(e) {
  console.log(e.data);
});

在钉钉页面中,可以使用钉钉.runtime.on()方法监听H5发送的消息。

钉钉.runtime.on('message', function(e) {
  console.log(e.data);
});

注意

在实现钉钉小程序和H5页面之间的双向通信时,需要注意以下几点:

  • 钉钉小程序和H5页面必须运行在同一个域下。
  • 钉钉小程序和H5页面必须使用相同的协议。
  • 钉钉小程序和H5页面必须使用相同的端口。
  • 钉钉小程序和H5页面必须使用相同的URL路径。

附双向通信全部代码

钉钉页面代码:


H5页面代码:

<script>
addEventListener('message', function(e) {
  console.log(e.data);
});

钉钉.runtime.postMessage({
  text: 'hello钉钉'
});
</script>