当前位置: 首页 > 知识库问答 >
问题:

javascript - 微信小程序webview中使用微信jssdk的问题?

萧心远
2023-07-19

我们有h5版的页面,为了快速实现小程序,我们用小程序的webview嵌套了h5,但是有些功能需要借助小程序的能力,文档上写的可以wx.miniProgram.postMessage.

但是需要引入微信的jssdk,还要有下面的配置

wx.config({  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。  appId: '', // 必填,公众号的唯一标识  timestamp: , // 必填,生成签名的时间戳  nonceStr: '', // 必填,生成签名的随机串  signature: '',// 必填,签名  jsApiList: [] // 必填,需要使用的JS接口列表});

我们只是一个通用的h5页面,并没有公众号,没有appid这些东西,请问这种情况可以用jssdk吗?

共有5个答案

商麒
2023-07-19

wx.miniProgram.postMessage 不需要jssdk就可以使用
不过我们实现h5调用小程序能力一般这样:

h5页面A使用 wx.miniProgram.navigateTo 跳转到小程序的B页面
在B页面中用户点击(获取手机号,地址,车牌 等)小程序能力后
B使用redirectTo到h5的C页面 数据使用querystring传递 C页面对localStorage进行设置
设置完后C页面直接使用 wx.miniProgram.navigateBack 即可回到A页面
A页面使用监听storage事件接收小程序的数据
当然也可以借助后端 比如使用websocket等 让流程更简单

松昱
2023-07-19

不可以吧。你的H5页面是运行在微信小程序的web-view组件中,肯定无法直接使用微信JS-SDK的。因为微信JS-SDK是为微信内置浏览器提供的API,而小程序的web-view并不等同于微信内置浏览器。

当然你真想用的话,可以利用小程序提供的桥接功能来实现。微信小程序的web-view组件提供了一些方法,允许小程序和H5页面之间进行通信。

比如说,首先在H5页面中通过window.WeixinJSBridgewindow.wx.miniProgram对象(不过window.wx.miniProgram对象在H5页面中可能不可用)来判断当前环境是否为小程序,然后调用postMessage方法向小程序发送消息。然后在小程序中监听message事件来接收H5页面发送的消息。

这样,你就可以在H5页面中调用小程序的API,实现一些需要小程序能力的功能。

在H5页面中:

if (window.WeixinJSBridge) {  window.WeixinJSBridge.invoke('postMessage', {    data: { key: 'value' }  });}

在小程序中:

Page({  onMessage: function(event) {    console.log(event.detail.data); // { key: 'value' }  }});

在这个示例中,H5页面使用window.WeixinJSBridge.invoke('postMessage', { data: { key: 'value' } })向小程序发送消息,然后小程序监听message事件来接收消息。

如果你的H5页面需要频繁和小程序进行通信,理论上可以封装一些函数来简化操作。

在H5页面中创建一个函数,用于判断当前环境是否为小程序,并发送消息:

function postMessageToMiniProgram(data) {  if (window.WeixinJSBridge) {    window.WeixinJSBridge.invoke('postMessage', { data: data });  } else {    console.log('Not in WeChat MiniProgram');  }}

然后,你可以在需要的地方调用这个函数来发送消息:

postMessageToMiniProgram({ key: 'value' });

在小程序中,你可以在onLoad方法中添加一个事件监听器,用于接收H5页面发送的消息:

Page({  onLoad: function() {    wx.createWebViewContext('webview').addEventListener('message', this.onMessage);  },  onMessage: function(event) {    console.log(event.detail.data); // { key: 'value' }  }});

上面仅是个很简单的示例,要用的话还是最好还是根据你的实际需求进行修改和扩展。

松琦
2023-07-19

这个可以直接用,不需要config

穆鸿波
2023-07-19

注册一个公众号很快的,点一点就行了,就是企业认证会稍微花费一些时间。
所以如果有需求,做一下注册和认证是最好的,不然很多API是没办法用的。

最重要的一点就是如果没有在开放平台注册小程序,你们准备怎么发布小程序呢?


另外提醒一下小程序嵌套 webview 的开发方式,很可能过不了审。最终很可能得用 uni-app 编译成小程序的方式来处理。

左丘子平
2023-07-19

更新

  1. 如果只是单纯调用如下的接口,是不需要的。注意: 需要登录小程序管理后台配置业务域名
    微信公众平台 --> 小程序 --> 开发管理 --> 开发设置 --> 业务域名
    image.png
  2. 如果需要调用上图之外的接口,是必须先注入配置信息(包含公众号appId),否则将无法使用。
    Docs: JSSDK使用步骤
 类似资料:
  • 场景: 我们是一个公司,然后给对面不同公司做对应的小程序, 但是数据不允许放在我们服务器里面,要放到他们服务器里面, 然后这样子的话就得请求他们的接口,用他们的域名, 然后我们的微信小程序就需要在后台配置不同公司的request合法域名, 但是我看微信小程序里面最多配置200个合法域名,而且到时候如果2000个,20000个呢, 这种情况该如何处理呢? 我想的是可以做一个代理转发,就放一个中间的请

  • 分享接口只有认证公众号才能使用,域名必须备案且在微信后台设置。 先确认已经满足使用jssdk的要求再进行开发。 WechatPlugin 插件提供了commonJS的引入方式,因此你不需要在 index.html 引入文件。 版本要求 WechatPlugin在vux@^2.1.0-rc.19开始支持 引入 在 main.js 中全局引入: import { WechatPlugin } from

  • @megalo/target 的 platform 设置成 wechat,mini-css-extract-plugin 提取文件后缀改成微信小程序的 wxss。 const createMegaloTarget = require( '@megalo/target' ) const compiler = require( '@megalo/template-compiler' ) const M

  • 1、第三方应用授权对接 ​ 之前对接小程序只提供了开发者授权的方式,这种方式的弊端是,如果客户同时对接了其他的系统,会产生access token冲突,导致消息发不过来。因此新增第三方平台授权的方式,客户可以在智齿后台直接扫二维码授权对接。流程如下: 1.1、选择授权方式,进入配置页 点击绑定小程序时选择授权方式,默认推荐第三方平台授权: 点击确定进入配置页: 1.2、扫描授权二维码 点击“微信公

  • 微信小程序配置 1.微信小程序使用流程 具体配置参考相关教程 uni-app编译版参考教程 uni-app编译版 uni-app开源版参考教程 uni-app开源版 2.微信小程序下载 打开后台-小程序-微信小程序-小程序源码下载,注:针对已购买小程序的客户,可选"编译版""开源版""更新包" 3.微信小程序装修 1.首页导航: (导航能够有效帮助粉丝跳转到各个关键页面,是整个店铺的“指南针”。)

  • 微信小程序 微信小程序扫码授权以后,用户在小程序点击客服按钮发送的消息会转发给机器人,机器人会自动回复消息给小程序用户,同一个微信小程序同时只能绑定一个机器人,如果绑定了新的机器人,之前绑定的机器人会解除绑定。 注:微信小程序渠道接入后,用户仅可以发送文字进行问答。 只需三步接入微信小程序,自动回答小程序上的用户问题: 1. 创建机器人 注册登录https://bot.4paradigm.com后