nodebb-plugin-ezoic-infinite 1.5.97 → 1.5.98
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 +36 -16
package/package.json
CHANGED
package/public/client.js
CHANGED
|
@@ -1344,15 +1344,34 @@ function buildOrdinalMap(items) {
|
|
|
1344
1344
|
|
|
1345
1345
|
|
|
1346
1346
|
|
|
1347
|
-
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
// ===== V7.1 soft up-scroll purge for ezoic-ad-between =====
|
|
1348
1351
|
(function () {
|
|
1349
1352
|
var lastY = window.pageYOffset || document.documentElement.scrollTop || 0;
|
|
1350
1353
|
var ticking = false;
|
|
1354
|
+
var lastPurgeTs = 0;
|
|
1355
|
+
var PURGE_COOLDOWN_MS = 350;
|
|
1356
|
+
|
|
1357
|
+
function softPurgeBetweenWraps() {
|
|
1358
|
+
var now = Date.now();
|
|
1359
|
+
if (now - lastPurgeTs < PURGE_COOLDOWN_MS) return;
|
|
1360
|
+
lastPurgeTs = now;
|
|
1361
|
+
|
|
1362
|
+
var viewportTop = window.pageYOffset || document.documentElement.scrollTop || 0;
|
|
1363
|
+
var keepBuffer = 240; // garde les pubs proches du viewport pour éviter le "clignotement"
|
|
1351
1364
|
|
|
1352
|
-
function purgeBetweenWraps() {
|
|
1353
1365
|
try {
|
|
1354
1366
|
document.querySelectorAll('.nodebb-ezoic-wrap.ezoic-ad-between').forEach(function (w) {
|
|
1355
|
-
try {
|
|
1367
|
+
try {
|
|
1368
|
+
var r = w.getBoundingClientRect();
|
|
1369
|
+
var absBottom = viewportTop + r.bottom;
|
|
1370
|
+
// SOFT: supprimer uniquement les wraps largement au-dessus du viewport
|
|
1371
|
+
if (absBottom < (viewportTop - keepBuffer)) {
|
|
1372
|
+
w.remove();
|
|
1373
|
+
}
|
|
1374
|
+
} catch (e) {}
|
|
1356
1375
|
});
|
|
1357
1376
|
} catch (e) {}
|
|
1358
1377
|
}
|
|
@@ -1363,9 +1382,12 @@ function buildOrdinalMap(items) {
|
|
|
1363
1382
|
requestAnimationFrame(function () {
|
|
1364
1383
|
var y = window.pageYOffset || document.documentElement.scrollTop || 0;
|
|
1365
1384
|
var dy = y - lastY;
|
|
1366
|
-
|
|
1367
|
-
|
|
1385
|
+
|
|
1386
|
+
// uniquement quand on remonte franchement
|
|
1387
|
+
if (dy < -12) {
|
|
1388
|
+
softPurgeBetweenWraps();
|
|
1368
1389
|
}
|
|
1390
|
+
|
|
1369
1391
|
lastY = y;
|
|
1370
1392
|
ticking = false;
|
|
1371
1393
|
});
|
|
@@ -1373,21 +1395,19 @@ function buildOrdinalMap(items) {
|
|
|
1373
1395
|
|
|
1374
1396
|
window.addEventListener('scroll', onScroll, { passive: true });
|
|
1375
1397
|
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1398
|
+
// nettoyage doux après chargement infini / navigation ajax
|
|
1399
|
+
function postLoadSoftPurge() {
|
|
1400
|
+
setTimeout(softPurgeBetweenWraps, 0);
|
|
1401
|
+
setTimeout(softPurgeBetweenWraps, 220);
|
|
1402
|
+
setTimeout(softPurgeBetweenWraps, 600);
|
|
1381
1403
|
}
|
|
1382
1404
|
|
|
1383
1405
|
if (window.jQuery) {
|
|
1384
|
-
window.jQuery(window).on('action:ajaxify.end action:infiniteScroll.loaded',
|
|
1385
|
-
setTimeout(purgeNearTop, 0);
|
|
1386
|
-
setTimeout(purgeNearTop, 250);
|
|
1387
|
-
});
|
|
1406
|
+
window.jQuery(window).on('action:ajaxify.end action:infiniteScroll.loaded', postLoadSoftPurge);
|
|
1388
1407
|
}
|
|
1389
1408
|
|
|
1390
|
-
|
|
1409
|
+
// premier passage
|
|
1410
|
+
setTimeout(softPurgeBetweenWraps, 0);
|
|
1391
1411
|
})();
|
|
1392
|
-
// ===== /V7 =====
|
|
1412
|
+
// ===== /V7.1 =====
|
|
1393
1413
|
|