nodebb-plugin-ezoic-infinite 1.6.2 → 1.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/public/client.js +25 -32
package/package.json
CHANGED
package/public/client.js
CHANGED
|
@@ -1348,32 +1348,32 @@ function buildOrdinalMap(items) {
|
|
|
1348
1348
|
|
|
1349
1349
|
// ===== CLEAN REFRACTOR: visibility manager for Ezoic wraps =====
|
|
1350
1350
|
(function () {
|
|
1351
|
-
//
|
|
1352
|
-
// -
|
|
1353
|
-
// -
|
|
1351
|
+
// v2.1 (safe):
|
|
1352
|
+
// - Keep the v2 behavior that didn't break forum rendering.
|
|
1353
|
+
// - Improve speed moderately (earlier preload + slightly higher show throughput).
|
|
1354
|
+
// - Improve up-scroll reliability without scanning the whole DOM:
|
|
1355
|
+
// * on scroll, enqueue showAds for wraps currently in/near viewport (small bounded loop).
|
|
1354
1356
|
|
|
1355
1357
|
var BETWEEN_SELECTOR = '.nodebb-ezoic-wrap.ezoic-ad-between';
|
|
1356
1358
|
var MESSAGE_SELECTOR = '.nodebb-ezoic-wrap.ezoic-ad-message';
|
|
1357
1359
|
var WRAP_SELECTOR = BETWEEN_SELECTOR + ', ' + MESSAGE_SELECTOR;
|
|
1358
1360
|
|
|
1359
|
-
|
|
1360
|
-
var
|
|
1361
|
-
var KEEP_MARGIN_BETWEEN_MOBILE = 2300;
|
|
1361
|
+
var KEEP_MARGIN_BETWEEN_DESKTOP = 2600;
|
|
1362
|
+
var KEEP_MARGIN_BETWEEN_MOBILE = 1900;
|
|
1362
1363
|
|
|
1363
|
-
// Show tuning
|
|
1364
|
-
var SHOW_COOLDOWN_MS =
|
|
1365
|
-
var MAX_SHOW_PER_TICK =
|
|
1364
|
+
// Show tuning (moderate)
|
|
1365
|
+
var SHOW_COOLDOWN_MS = 900;
|
|
1366
|
+
var MAX_SHOW_PER_TICK = 6;
|
|
1366
1367
|
|
|
1367
|
-
//
|
|
1368
|
-
var
|
|
1369
|
-
var
|
|
1370
|
-
var
|
|
1368
|
+
// Up-scroll helper: only check near-viewport wraps, bounded
|
|
1369
|
+
var SCAN_COOLDOWN_MS = 220;
|
|
1370
|
+
var lastScan = 0;
|
|
1371
|
+
var SCAN_BUDGET = 10;
|
|
1371
1372
|
|
|
1372
1373
|
function isMobile() {
|
|
1373
1374
|
try { return window.matchMedia && window.matchMedia('(max-width: 767px)').matches; } catch (e) { return false; }
|
|
1374
1375
|
}
|
|
1375
1376
|
function keepMarginBetween() { return isMobile() ? KEEP_MARGIN_BETWEEN_MOBILE : KEEP_MARGIN_BETWEEN_DESKTOP; }
|
|
1376
|
-
function proximityMargin() { return isMobile() ? PROXIMITY_MARGIN_MOBILE : PROXIMITY_MARGIN_DESKTOP; }
|
|
1377
1377
|
|
|
1378
1378
|
var lastShowById = Object.create(null);
|
|
1379
1379
|
var showQueue = [];
|
|
@@ -1430,7 +1430,7 @@ function buildOrdinalMap(items) {
|
|
|
1430
1430
|
if (removed >= 3) return;
|
|
1431
1431
|
try {
|
|
1432
1432
|
var lv = parseInt(w.getAttribute('data-last-visible') || '0', 10);
|
|
1433
|
-
if (lv && (Date.now() - lv) <
|
|
1433
|
+
if (lv && (Date.now() - lv) < 12000) return;
|
|
1434
1434
|
|
|
1435
1435
|
var r = w.getBoundingClientRect();
|
|
1436
1436
|
if (r.bottom < -margin || r.top > ((window.innerHeight || 0) + margin)) {
|
|
@@ -1441,7 +1441,7 @@ function buildOrdinalMap(items) {
|
|
|
1441
1441
|
});
|
|
1442
1442
|
}
|
|
1443
1443
|
|
|
1444
|
-
//
|
|
1444
|
+
// IO: preload earlier for faster display
|
|
1445
1445
|
var io = null;
|
|
1446
1446
|
function installIO() {
|
|
1447
1447
|
if (io || typeof IntersectionObserver === 'undefined') return;
|
|
@@ -1457,12 +1457,11 @@ function buildOrdinalMap(items) {
|
|
|
1457
1457
|
}
|
|
1458
1458
|
});
|
|
1459
1459
|
} catch (e) {}
|
|
1460
|
-
}, { root: null, rootMargin: '
|
|
1460
|
+
}, { root: null, rootMargin: '1200px 0px 1200px 0px', threshold: 0.01 });
|
|
1461
1461
|
|
|
1462
1462
|
try { document.querySelectorAll(WRAP_SELECTOR).forEach(function (w) { try { io.observe(w); } catch(e) {} }); } catch (e) {}
|
|
1463
1463
|
}
|
|
1464
1464
|
|
|
1465
|
-
// Observe new wraps
|
|
1466
1465
|
var moInstalled = false;
|
|
1467
1466
|
function installMO() {
|
|
1468
1467
|
if (moInstalled || typeof MutationObserver === 'undefined') return;
|
|
@@ -1496,20 +1495,18 @@ function buildOrdinalMap(items) {
|
|
|
1496
1495
|
try { mo.observe(document.documentElement || document.body, { childList: true, subtree: true }); } catch (e) {}
|
|
1497
1496
|
}
|
|
1498
1497
|
|
|
1499
|
-
//
|
|
1500
|
-
|
|
1501
|
-
function proximityScan() {
|
|
1498
|
+
// Small bounded scan near viewport on scroll (helps on up-scroll)
|
|
1499
|
+
function scanNearViewport() {
|
|
1502
1500
|
var now = Date.now();
|
|
1503
|
-
if (now - lastScan <
|
|
1501
|
+
if (now - lastScan < SCAN_COOLDOWN_MS) return;
|
|
1504
1502
|
lastScan = now;
|
|
1505
1503
|
|
|
1506
|
-
var margin = proximityMargin();
|
|
1507
1504
|
var vh = window.innerHeight || document.documentElement.clientHeight || 0;
|
|
1508
|
-
|
|
1505
|
+
var margin = 900; // near viewport window
|
|
1509
1506
|
var wraps;
|
|
1510
1507
|
try { wraps = document.querySelectorAll(WRAP_SELECTOR); } catch (e) { return; }
|
|
1511
1508
|
|
|
1512
|
-
var budget =
|
|
1509
|
+
var budget = SCAN_BUDGET;
|
|
1513
1510
|
for (var i = 0; i < wraps.length && budget > 0; i++) {
|
|
1514
1511
|
var w = wraps[i];
|
|
1515
1512
|
try {
|
|
@@ -1523,10 +1520,9 @@ function buildOrdinalMap(items) {
|
|
|
1523
1520
|
}
|
|
1524
1521
|
}
|
|
1525
1522
|
|
|
1526
|
-
// Sweep only between cleanup
|
|
1527
1523
|
var sweepPending = false;
|
|
1528
1524
|
var lastSweep = 0;
|
|
1529
|
-
var SWEEP_COOLDOWN_MS =
|
|
1525
|
+
var SWEEP_COOLDOWN_MS = 600;
|
|
1530
1526
|
|
|
1531
1527
|
function scheduleSweep() {
|
|
1532
1528
|
var now = Date.now();
|
|
@@ -1542,7 +1538,7 @@ function buildOrdinalMap(items) {
|
|
|
1542
1538
|
|
|
1543
1539
|
function onScroll() {
|
|
1544
1540
|
scheduleSweep();
|
|
1545
|
-
|
|
1541
|
+
scanNearViewport();
|
|
1546
1542
|
scheduleShowTick();
|
|
1547
1543
|
}
|
|
1548
1544
|
|
|
@@ -1555,10 +1551,7 @@ function buildOrdinalMap(items) {
|
|
|
1555
1551
|
|
|
1556
1552
|
if (window.jQuery) {
|
|
1557
1553
|
window.jQuery(window).on('action:ajaxify.end action:infiniteScroll.loaded', function () {
|
|
1558
|
-
setTimeout(function () {
|
|
1559
|
-
installIO();
|
|
1560
|
-
onScroll();
|
|
1561
|
-
}, 0);
|
|
1554
|
+
setTimeout(function () { installIO(); onScroll(); }, 0);
|
|
1562
1555
|
});
|
|
1563
1556
|
}
|
|
1564
1557
|
|