收藏
回答

微信小程序 WebView SDK 加载后 `wx` 对象为 `undefined` 的问题

问题类型 微信版本 基础库版本
Bug 8.0.70 3.6.2

偶现代码片段

```html

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>微信 JSSDK 加载问题复现</title>

</head>

<body>

<h1>微信 JSSDK 加载问题</h1>

<div id="result">检测中...</div>


<script>

// 加载微信 JSSDK

const script = document.createElement('script');

script.src = 'https://res2.wx.qq.com/open/js/jweixin-1.6.0.js';

script.onload = function() {

console.log('脚本加载完成');

console.log('window.wx:', window.wx);

console.log('window.WeixinJSBridge:', window.WeixinJSBridge);

console.log('window.WeixinJSBridge.invoke:', window.WeixinJSBridge?.invoke);

// 问题:wx 对象可能为 undefined

document.getElementById('result').innerHTML =

'wx: ' + (typeof window.wx === 'undefined' ? 'undefined' : 'defined') +

'<br>wx.miniProgram: ' + (window.wx?.miniProgram ? 'defined' : 'undefined');

};

script.onerror = function(e) {

console.error('脚本加载失败', e);

};

document.head.appendChild(script);

</script>

</body>

</html>

```


### 问题描述


**问题现象**:在微信小程序 web-view 组件中,通过 `loadScript` 加载微信 JSSDK (`jweixin-1.6.0.js`) 成功后,`script.onload` 回调触发时 `window.wx` 对象为 `undefined`

问题主要出现在微信:8.0.69、8.0.70版本的安卓端,其他版本和 ios没出现这个问题


**环境**

- 微信版本:8.0.70

- 小程序基础库版本:3.6.2

- JSSDK 版本:1.6.0


### 复现步骤


1. 在小程序 web-view 组件中打开 H5 页面

2. H5 页面通过动态创建 `<script>` 标签加载 `https://res2.wx.qq.com/open/js/jweixin-1.6.0.js`

3. 监听 `script.onload` 事件

4.`onload` 回调中检查 `window.wx` 对象


### 期望行为


`script.onload` 回调触发时,`window.wx``window.wx.miniProgram` 应该已经定义完成,可以正常使用 JSSDK 提供的接口。


### 实际行为


`script.onload` 回调触发时,`window.wx``undefined`


最后一次编辑于  04-17
回答关注问题邀请回答
收藏

2 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    04-20

    你好,麻烦提供出现问题的具体机型、系统版本号,以及能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    04-20
    有用
    回复
  • 智能回答 智能回答 本次回答由AI生成
    04-17
    有用 1
    回复
登录 后发表内容