uni-app 中为兼容微信小程序生态存在全局的 wx 对象,而微信 JS-SDK 也是注册全局的 wx 对象,为避免混淆,可以将微信 JS-SDK 中的 wx 对象改名。采用以下两种方案之一即可。
方案一:模块化
在 uni-app 中可以使用模块方式引用微信 js-sdk ,可以避免与 uni-app 内置 wx 全局对象冲突的问题。
微信官网直接下载的如果使用有问题,可以使用 jweixin-module。
安装
- NPM安装方式(不会用NPM就不要用这种方式)
代码语言:javascript复制npm install jweixin-module --save
- 下载使用方式
下载地址:https://unpkg.com/jweixin-module@1.6.0/lib/index.js
使用
代码语言:javascript复制var jWeixin = require('jweixin-module')
jWeixin.ready(function(){
// TODO
});
方案二:全局引入
如果不使用模块化引入 JS-SDK,而采用传统方式在 html 模板中直接全局引入,可以修改全局变量名称。
代码语言:javascript复制<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<!-- Open Graph data -->
<!-- <meta property="og:title" content="Title Here" /> -->
<!-- <meta property="og:url" content="http://www.example.com/" /> -->
<!-- <meta property="og:image" content="http://example.com/image.jpg" /> -->
<!-- <meta property="og:description" content="Description Here" /> -->
<script>
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' (coverSupport ? ', viewport-fit=cover' : '') '" />')
</script>
<script src="http://res.wx.qq.com/open/js/jweixin-1.6.0.js"/>
<script>
window.jWeixin=window.wx;
delete window.wx;
</script>
<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
</head>
<body>
<noscript>
<strong>Please enable JavaScript to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
完整API
微信JS-SDK说明文档