v26110468 百宝箱:第1条常驻滚动,后3条随机1条滚动

This commit is contained in:
deploy
2026-11-05 15:21:59 +00:00
parent c2744a6587
commit 7589649f73
5 changed files with 26 additions and 27 deletions

View File

@@ -244,5 +244,5 @@
}
/* feed.js 首页默认不加载(index.html 只引了 topics.js),这里按需拉一次 */
if (window.GC_FEED) init();
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110467'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
else { var fs = document.createElement('script'); fs.src = 'guangchang/feed.js?v=26110468'; fs.onload = fs.onerror = init; document.body.appendChild(fs); }
})();

View File

@@ -201,14 +201,13 @@
function lvShuffle() {
var rs = [].slice.call(box.querySelectorAll('.kit-rows .kr')).filter(function (r) { return r.querySelector('.kr-lv'); });
if (!rs.length) return;
var n = Math.min(rs.length, Math.random() < .5 ? 1 : 2), nx, t = 0; /* 11-04 用户:同时滚动 2~3 条 → 1~2 条,不超过 2 */
/* 11-04 用户:「生娃到底要花多少钱」那条(.hot)尽量多轮播,约 70% 的轮次都有它;其余名额从另外几条里随机挑 */
var hi = -1; rs.forEach(function (r, i) { if (r.classList.contains('hot')) hi = i; });
var withHot = hi >= 0 && Math.random() < .7;
do { /* 和上一轮完全一样就重挑(只有「生娃」一条时允许连着出,它自己的内容每 3 秒在换) */
var rest = rs.map(function (r, i) { return i; }).filter(function (i) { return i !== hi; }).sort(function () { return Math.random() - .5; });
nx = (withHot ? [hi].concat(rest.slice(0, n - 1)) : rest.slice(0, n)).sort();
} while (nx.join() === LV_ON.join() && !(withHot && n === 1) && ++t < 9);
/* 11-05 用户:「四个文章第一个一直保持滚动,其他三个随机选一个滚动」→ 第 1 条(生娃计算器)常驻滚动;
后 3 条里每 5~7 秒随机换一条滚(和上一轮不同),同时最多 2 条在滚 */
var first = rs[0] === box.querySelector('.kit-rows .kr') ? 0 : -1;
var rest = rs.map(function (r, i) { return i; }).filter(function (i) { return i !== first; });
var prev = LV_ON.filter(function (i) { return i !== first; })[0], c = rest.filter(function (i) { return i !== prev; });
if (!c.length) c = rest;
var nx = (first === 0 ? [0] : []).concat(c.length ? [c[Math.floor(Math.random() * c.length)]] : []).sort();
LV_ON = nx;
rs.forEach(function (r, i) {
var go = LV_ON.indexOf(i) >= 0;