背景
在混合开发日益普及的今天,H5 页面频繁调用小程序原生能力已成为常态。这种结合不仅拓展了 H5 的功能边界,也让许多原本难以实现的交互变得轻松简单。
但在实际落地中,特别是在套壳小程序场景下,通信机制面临几个核心挑战:
- 注入时机不确定:全局变量
my可能尚未就绪,盲目调用会导致报错,每个使用点都需增加判断或监听逻辑。 - 结果处理复杂:小程序返回的数据结构多样,H5 端需针对不同
type做差异化处理。 - 生命周期管理:监听器若未在组件销毁时正确解绑,极易引发内存泄漏。
动态注入策略
因业务需支持多端投放,小程序 SDK 不宜硬编码在 <head> 中,而是在应用启动时动态判断环境并自动注入:
export function injectMiniAppScript() {
if (isAlipayMiniApp() || isAlipayMiniAppWebIDE()) {
const s = document.createElement('script');
s.src = 'https://appx/web-view.min.js';
s.onload = () => {
// 加载完成时触发自定义事件
const customEvent = new CustomEvent('myLoad', { detail: '' });
document.dispatchEvent(customEvent);
};
s.onerror = (e) => {
// 加载失败时上传日志
uploadLog({ tip: `INJECT_MINIAPP_SCRIPT_ERROR` });
};
document.body.insertBefore(s, document.body.firstChild);
}
}

