前端指标 - koubei-fe/koubei-antdm-init GitHub Wiki
性能
https://design.koubei.com/docs/merchant-app?p1=h5quality&type=developer
JS API 适配
口碑掌柜:https://design.koubei.com/docs/merchant-app?p1=jsapi&p2=index&type=developer
钉钉: https://open-doc.dingtalk.com/docs/doc.htm?spm=0.0.0.0.QWOaAT&treeId=171&articleId=104906&docType=1
Demo:
const isAlipay = /alipay/i.test(navigator.userAgent);
const isDing = /dingtalk/i.test(navigator.userAgent);
if (isAlipay) {
kb.hideLoading();
} else if (isDing) {
dd.device.notification.hidePreloader();
}
钉钉里面调用 JS API 需要在 dd.ready(readyCallback) 执行后;
页面转场
多页面之间的切换,统一采用 pushWindow/openLink 方式。
页面内嵌 iframe 页面高度同步
子页面在页面加载完成后,需要通过 postMessage 将页面高度通知到父页面。
window.parent.postMessage({"pageHeight": pageHeight}, '*');
页面内嵌 bridge 方法调用
window.parent.postMessage({
type: 'bridge',
method: 'pushWindow',
params: ['http://alipay.net'],
}, '*');
window.parent.postMessage({
type: 'bridge',
method: 'toast',
params: ['toast文字'],
}, '*');
window.parent.postMessage({
type: 'bridge',
method: 'showLoading',
params: [],
}, '*');
window.parent.postMessage({
type: 'bridge',
method: 'hideLoading',
params: [],
}, '*’);
钉钉端禁止 iframe 第三方cookie 问题解决方案
由于钉钉端 WebView 对第三方 Cookie 的限制,使用 iframe 内嵌页面,会导致页面登录授权后,设置 Cookie 失效,后续的 HTTP 请求都不能带 Cookie。
钉钉计划将 WebView 的第三方Cookie限制放开,但是依赖钉钉客户端的发版,需要3至5个月的更新。
所以放弃通过 Cookie 存储会话信息,改为通过 URL 传递 SessionID 信息。