zhuli 2 недель назад
Родитель
Сommit
09db260a6f
1 измененных файлов с 23 добавлено и 30 удалено
  1. 23 30
      HBuilderProjects/shareIndex.html

+ 23 - 30
HBuilderProjects/shareIndex.html

@@ -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();