需求是根据用户的输入,动态绑定分享朋友事件,使得生成link属性里的一个参数有不同的值。
我看到jssdk官方文档上这样说:
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});
对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。可是这里我试过没有用,这些分享接口一旦放到ready函数外面就不起作用了!这是为什么?是不是文档有误?求帮助~
一下是我的代码:
<script>
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: "{$signPackage['appId']}",
timestamp: "{$signPackage['timestamp']}",
nonceStr: "{$signPackage['nonceStr']}",
signature: "{$signPackage['signature']}",
jsApiList: [
'onMenuShareAppMessage',
'onMenuShareTimeline',
]
});
function test(var){
//分享朋友
wx.onMenuShareAppMessage({
title: 'title',
desc: 'desc',
link: "{php echo $this->createMobileUrl('member/share_credit', array('type'=>'share','fromuser'=>$openid))}"+'&share_id='+var,
imgUrl: "{php echo tomedia($share_images)}",
trigger: function (res) {
},
success: function (res) {
alert('分享成功!');
},
cancel: function (res) {
alert('分享是一种美德哦!');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
}
</script>
<button onclick="test({$var});">测试</button>
原则上是可以,我测试过,不过不完整。根据我的经验,为保证测试通过需要遵循这样一些条件。
在所有微信接口调用前必须保证
jweixin-1.0.0.js
文件先加载完成完成上一步的基础上,必须保证
wx.config
已经获取了正确的初始化参数完成上一步的基础上,即可在
wx.ready
方法外调用允许的接口方法如果在
wx.config
尚未进行初始化结束前就存在调用接口的操作,则操作失败的可能性是存在的。因此这个初始化操作应当置于所有接口调用方法之前,不要采用异步的方法给wx.config
初始化,这可能导致它还没有完成初始化,就会执行后续接口调用,而这种情况极可能是不能触发接口调用的。