|
|
@@ -498,6 +498,10 @@
|
|
|
display: block;
|
|
|
}
|
|
|
|
|
|
+ #fabDock.wx-open-enabled #openApp {
|
|
|
+ pointer-events: none;
|
|
|
+ }
|
|
|
+
|
|
|
#launch-btn {
|
|
|
display: block;
|
|
|
width: 100%;
|
|
|
@@ -1436,6 +1440,11 @@
|
|
|
} catch (eA) {}
|
|
|
}
|
|
|
|
|
|
+ function isFabWxOpenLayerActive() {
|
|
|
+ var dock = document.getElementById('fabDock');
|
|
|
+ return !!(dock && dock.classList.contains('wx-open-enabled'));
|
|
|
+ }
|
|
|
+
|
|
|
function updateFabOpenLayer() {
|
|
|
var dock = document.getElementById('fabDock');
|
|
|
var hit = document.getElementById('fabWxHit');
|
|
|
@@ -1466,6 +1475,7 @@
|
|
|
refreshWxLaunchTagAttrs();
|
|
|
tag.addEventListener('launch', function () {
|
|
|
console.log('[wx-open-launch-app] launch ok');
|
|
|
+ showFabToast('正在打开 U店在哪…');
|
|
|
});
|
|
|
tag.addEventListener('error', function (e) {
|
|
|
var detail = e && e.detail;
|
|
|
@@ -1562,27 +1572,6 @@
|
|
|
console.log('[openApp]', tip);
|
|
|
}
|
|
|
|
|
|
- function tryTriggerWxOpenLaunchApp() {
|
|
|
- var tag = document.getElementById('launch-btn');
|
|
|
- if (!tag) return false;
|
|
|
- try {
|
|
|
- if (tag.shadowRoot) {
|
|
|
- var inner = tag.shadowRoot.querySelector('button');
|
|
|
- if (inner && typeof inner.click === 'function') {
|
|
|
- inner.click();
|
|
|
- return true;
|
|
|
- }
|
|
|
- }
|
|
|
- if (typeof tag.click === 'function') {
|
|
|
- tag.click();
|
|
|
- return true;
|
|
|
- }
|
|
|
- } catch (eWx) {
|
|
|
- console.warn('[wx-open-launch-app] trigger', eWx);
|
|
|
- }
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
function ensureWeChatJssdkReadyOnClick() {
|
|
|
showFabToast('正在获取微信签名…');
|
|
|
var timedOut = false;
|
|
|
@@ -1595,8 +1584,8 @@
|
|
|
window.clearTimeout(timer);
|
|
|
if (timedOut) return false;
|
|
|
if (ok) {
|
|
|
- updateFabOpenLayer();
|
|
|
- showFabToast('请再点一次底部按钮打开 App');
|
|
|
+ scheduleWxOpenTagRefresh();
|
|
|
+ showFabToast('签名完成,请再点一次底部 APP内打开');
|
|
|
return true;
|
|
|
}
|
|
|
showAppOpenFailTip(
|
|
|
@@ -1641,11 +1630,16 @@
|
|
|
*/
|
|
|
function tryOpenHBuilderApp() {
|
|
|
var inWx = isWeChatInAppBrowser();
|
|
|
- showFabToast('正在处理…');
|
|
|
|
|
|
+ /* JSSDK 已就绪:必须由用户手指点击 wx-open-launch-app,JS 模拟 click 无效 */
|
|
|
+ if (inWx && weChatJssdkConfigured && isFabWxOpenLayerActive()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (inWx && weChatJssdkConfigured) {
|
|
|
- showFabToast('正在打开 U店在哪…');
|
|
|
- tryTriggerWxOpenLaunchApp();
|
|
|
+ showAppOpenFailTip(
|
|
|
+ '开放标签未显示。请刷新页面;若仍失败请检查开放平台是否绑定移动应用 ' +
|
|
|
+ WECHAT_OPEN_APP_ID
|
|
|
+ );
|
|
|
return;
|
|
|
}
|
|
|
if (inWx && !weChatJssdkConfigured) {
|
|
|
@@ -2858,6 +2852,9 @@
|
|
|
if (launchTag) launchTag.setAttribute('appid', WECHAT_OPEN_APP_ID);
|
|
|
var openAppClickLock = 0;
|
|
|
function onOpenAppActivate(e) {
|
|
|
+ if (isWeChatInAppBrowser() && weChatJssdkConfigured && isFabWxOpenLayerActive()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (e && e.cancelable) e.preventDefault();
|
|
|
var now = Date.now();
|
|
|
if (now - openAppClickLock < 400) return;
|
|
|
@@ -2869,10 +2866,6 @@
|
|
|
openBtn.addEventListener('click', onOpenAppActivate);
|
|
|
openBtn.addEventListener('touchend', onOpenAppActivate);
|
|
|
}
|
|
|
- var fabDock = document.getElementById('fabDock');
|
|
|
- if (fabDock) {
|
|
|
- fabDock.addEventListener('touchend', onOpenAppActivate);
|
|
|
- }
|
|
|
/* 先于 run(),避免误以为没调 getWxConfig */
|
|
|
scheduleWeChatJssdkBootstrap();
|
|
|
run();
|