微信转发图:百问专题/计算器/趣味小测/孕妈广场 357 张 5:4 转发图(logo+核心词大字),页面上报 imageUrl(v26110296)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
/* 页面版本号(YYMMDD+序号):显示在「关于兜爸心选」页底部;bump 时同步 head 注释与 ?v= */
|
||||
var VER = '26110295';
|
||||
var VER = '26110296';
|
||||
const $ = (s, c) => (c || document).querySelector(s);
|
||||
const $$ = (s, c) => Array.from((c || document).querySelectorAll(s));
|
||||
|
||||
|
||||
@@ -231,5 +231,5 @@
|
||||
}
|
||||
/* feed.js 首页默认不加载(index.html 只引了 topics.js),这里按需拉一次 */
|
||||
if (window.GC_FEED) init();
|
||||
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110295'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
|
||||
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110296'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
|
||||
})();
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
(function () {
|
||||
var sec = document.getElementById('gcHome');
|
||||
if (!sec) return;
|
||||
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'js/gch/v4.css?v=26110295';
|
||||
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'js/gch/v4.css?v=26110296';
|
||||
document.head.appendChild(l);
|
||||
var s = document.createElement('script'); s.src = 'js/gch/v4.js?v=26110295';
|
||||
var s = document.createElement('script'); s.src = 'js/gch/v4.js?v=26110296';
|
||||
s.onload = function () { if (sec.querySelector('.g4-foot')) merge(); else sec.addEventListener('gc4-ready', merge, { once: true }); }; /* v4 要先拉 feed.js 才渲染 */
|
||||
document.body.appendChild(s);
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
if (/[?&]kit=0(?:&|$)/.test(location.search)) return;
|
||||
var box = document.getElementById('kit'), sec = document.getElementById('kitHome');
|
||||
if (!box || !sec) return;
|
||||
var V = '26110295';
|
||||
var V = '26110296';
|
||||
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'js/kit.css?v=' + V; document.head.appendChild(l);
|
||||
document.documentElement.classList.add('has-kit');
|
||||
|
||||
|
||||
54
js/share-card.js
Normal file
54
js/share-card.js
Normal file
@@ -0,0 +1,54 @@
|
||||
/* 微信转发卡片图(11-04 用户:「孕期百问 / 计算器 / 趣味小测 / 孕妈广场所有能转发的内容都做 5:4 转发图,带兜爸心选 logo,核心内容大字」)
|
||||
图是预先生成的静态 jpg(750×600),放在 assets/share/:
|
||||
t/<专题 slug>.jpg 百问专题 / 计算器(topic/*)
|
||||
c/<测试 id>.jpg 趣味小测(guangchang/ceshi/?id=)
|
||||
g/<笔记 id>.jpg 广场笔记(?n=);g/t-<话题 id>.jpg 话题(?t=);g/home.jpg 广场;g/ceshi.jpg 测试列表
|
||||
生成脚本在 tools/share-card/(node build.js 出清单 → python3 render.py 截图;icons.json 由 index.html CS_TI / app.js QA_IC 导出),改了标题 / 新增内容要重跑。
|
||||
协议:wx.miniProgram.postMessage({action:'location', href, title, imageUrl}),宿主 shareCard 用它覆盖转发卡(box_app/docs/h5-auth-standard.md 第四节)。
|
||||
postMessage 不是实时投递,微信在分享那一刻才派发,所以每次换内容都要再报一次;子页面没引 jweixin,这里按需加载。 */
|
||||
(function (g) {
|
||||
'use strict';
|
||||
var V = '26110296';
|
||||
var isWx = /MicroMessenger/i.test(navigator.userAgent || '');
|
||||
var waiting = [], loading = false;
|
||||
function ready(cb) {
|
||||
if (g.wx && g.wx.miniProgram && g.wx.miniProgram.postMessage) { cb(); return; }
|
||||
if (!isWx) return; /* 普通浏览器不用报 */
|
||||
waiting.push(cb);
|
||||
if (loading) return;
|
||||
loading = true;
|
||||
var s = document.createElement('script');
|
||||
s.src = 'https://res.wx.qq.com/open/js/jweixin-1.6.0.js';
|
||||
s.onload = function () { var l = waiting; waiting = []; l.forEach(function (f) { try { f(); } catch (e) {} }); };
|
||||
document.head.appendChild(s);
|
||||
}
|
||||
/* img:相对当前页的图片路径;title:转发卡标题(缺省用页面标题) */
|
||||
function share(img, title) {
|
||||
var abs = '';
|
||||
try { if (img) abs = new URL(img, document.baseURI).href.split('#')[0] + '?v=' + V; } catch (e) {}
|
||||
var t = title || document.title || '';
|
||||
ready(function () {
|
||||
try { g.wx.miniProgram.postMessage({ data: { action: 'location', href: location.href, title: t, imageUrl: abs } }); } catch (e) {}
|
||||
});
|
||||
}
|
||||
/* 单页里内容随地址变(pushState / replaceState / popstate / hashchange):get() 返回 [img, title],同一地址只报一次 */
|
||||
function watch(get) {
|
||||
var last = '';
|
||||
function pull() {
|
||||
var k = location.pathname + location.search;
|
||||
if (k === last) return;
|
||||
last = k;
|
||||
var r = get() || [];
|
||||
share(r[0], r[1]);
|
||||
}
|
||||
['pushState', 'replaceState'].forEach(function (fn) {
|
||||
var o = history[fn];
|
||||
history[fn] = function () { var r = o.apply(this, arguments); setTimeout(pull, 0); return r; };
|
||||
});
|
||||
g.addEventListener('popstate', pull);
|
||||
g.addEventListener('hashchange', pull);
|
||||
pull();
|
||||
}
|
||||
g.mbShare = share;
|
||||
g.mbShareWatch = watch;
|
||||
})(window);
|
||||
Reference in New Issue
Block a user