因为业务需要,我们得在开放标签的error事件中,写处理逻辑,以处理配置错误的小程序。
于是写了事件绑定。
btn.addEventListener("error", (e) => {
// 这里省略一些处理逻辑
console.log("launch err", e.detail);
});
对于配置正确的小程序,微信开放标签能正常拉起。
但是对于配置错误(如原始id),IOS中能够成功监听到error事件,但是安卓机不能。
安卓:
IOS:
请问安卓机不能监听到error事件是bug吗?
==============
补充:
如果点击错误的小程序,IOS中会监听到error事件,但是安卓中坚挺到的是launch事件。
你好,麻烦提供下复现链接
// React的项目
class myComponent extends Component{
// 省略无关代码逻辑...
// componentDidMount中注册事件
componentDidMount{
if (btn) {
const btn = document.getElementById("btn-id");
btn.addEventListener("error", (e) => {
alert("加载小程序信息失败,请联系管理员检查小程序原始ID等信息");
console.log("launch err", e.detail);
});
}
}
render(){
return (
<wx-open-launch-weapp
id={"btn-id"}
username={"gh_invalid_gh_id"}
path="/pages/index/index"
style={{
...someStyle
}}
>
<script type="text/wxtag-template">
<div
style={{
width: "100%",
}}
>
开放标签
</div>
</script>
</wx-open-launch-weapp>
</div>)
}
}
这个有解决了吗?我这尝试也监听不到
我遇到和你一样的问题,注册时间error都没有反应,没有下载app和下载app的情况都区别不了,简直要炸了
setClipboard(
btn,
`${constant.clipPrefix}${JSON.stringify({
target,
params
})}`
)
btn.addEventListener('launch', function (e) {
onLauncherApp(e)
})
btn.addEventListener('error', (e) => {
onLauncherAppError(e)
})
-----
const onLauncherApp = (e) => {
openCallBack = 'ok'
console.log('onLauncherApp', e)
if (e.isTrusted == 'false') {
gotoDownload()
console.log('打开app失败 跳转下载页去', e)
} else {
console.log('打开app成功', e)
}
}
---
const onLauncherAppError = (e) => {
openCallBack = 'error'
console.log('onLauncherAppError', e)
gotoDownload()
console.log('打开app失败', e)
}
<View
dangerouslySetInnerHTML={{
__html: `<wx-open-launch-app id='launch-btn${randomNum}' appid='${constant.WechatAppAppId}'
style='position:absolute;top:0;left:0;width:100%;height: 100%; z-index: 999; overflow: hidden;'
extinfo='${appParameter}'>
<script type='text/wxtag-template'>
<div class='btn' style='position:absolute;top:0;left:0;width:100%;height: 100%;opacity:0;' />
</script>
</wx-open-launch-app>`
}}
/>
gotoDownload()