zhuli 4 weeks ago
parent
commit
d045cc9489
1 changed files with 26 additions and 6 deletions
  1. 26 6
      HBuilderProjects/shareDynamic.html

+ 26 - 6
HBuilderProjects/shareDynamic.html

@@ -1128,7 +1128,13 @@
 			if (!m) return '';
 			if (!m) return '';
 			var n = String(name);
 			var n = String(name);
 			var nl = n.toLowerCase();
 			var nl = n.toLowerCase();
-			if (nl === 'imagepath' || nl === 'coverurl' || nl === 'userimage') {
+			if (
+				nl === 'imagepath' ||
+				nl === 'coverurl' ||
+				nl === 'userimage' ||
+				nl === 'item' ||
+				nl === 'dynamicitem'
+			) {
 				var smart = extractUrlLikeShareQueryParam(m, n);
 				var smart = extractUrlLikeShareQueryParam(m, n);
 				if (smart) return smart;
 				if (smart) return smart;
 			}
 			}
@@ -1174,15 +1180,29 @@
 			return 'shareCheckInUndefined.html' + (m ? ('?' + m) : '');
 			return 'shareCheckInUndefined.html' + (m ? ('?' + m) : '');
 		}
 		}
 
 
+		/**
+		 * 解析 item=/dynamicItem= 整段 JSON;支持 App 分享链 **双重 URL 编码**(decode 一次后仍为 %7B%22…)。
+		 */
 		function tryParseJsonObject(raw) {
 		function tryParseJsonObject(raw) {
 			raw = String(raw == null ? '' : raw).trim();
 			raw = String(raw == null ? '' : raw).trim();
 			if (!raw) return null;
 			if (!raw) return null;
-			try {
-				var o = JSON.parse(raw);
-				return o && typeof o === 'object' && !Array.isArray(o) ? o : null;
-			} catch (e) {
-				return null;
+			var s = raw;
+			for (var t = 0; t < 5; t++) {
+				try {
+					var o = JSON.parse(s);
+					return o && typeof o === 'object' && !Array.isArray(o) ? o : null;
+				} catch (e) {
+					if (t >= 4) return null;
+					try {
+						var next = decodeURIComponent(String(s).replace(/\+/g, ' '));
+						if (next === s) return null;
+						s = next;
+					} catch (e2) {
+						return null;
+					}
+				}
 			}
 			}
+			return null;
 		}
 		}
 
 
 		/**
 		/**