<html><head><!-- ... --></head><body>
<section id="when-is-open">
<!-- тут бесценное содержание, когда можно -->
</section>
<section id="when-is-closed" class="hidden">
<!-- тут предложение заглянуть строго в правильное время -->
</section>
</body>
CSS класс "hidden" должен прятать display: none
Так по умолчанию, если скрипты не работают, видна нормальная страница (в т.ч. поисковикам).Element.classList.add("hidden")
, Element.classList.remove("hidden")
.const recursiveSum = x => {
if (x.toString() === '[object Object]') {
const values = Object.values(x);
return values.reduce((acc, v) => acc + recursiveSum(v), 0);
}
const n = Number(x);
return Number.isNaN(n) ? 0 : n;
};
recursiveSum(obj) // 45
Так можно обработать объект любой глубины вложенности и с любыми значениями function getRandom(arrChances) {
const total = arrChances.reduce((acc, cur) => acc + cur);
const random = Math.floor(Math.random() * total);
for (let i = 0, top = 0; i < arrChances.length; i++) {
top += arrChances[i];
if (top > random) {
return i;
}
}
}
getRandom([ 1, 100 ]) // чаще всего будет 1. 0 очень редко
getRandom([ 1, 1 ]) // поровну будут выпадать то 0 то 1
getRandom([ 100, 700, 200 ])
0.1 + 0.2 !== 0.3 // true
0.1 + 0.2 // 0.30000000000000004
#
/Love/handler.php
отдавайте коротенький JavaScript, который вытащит window.location.hash
и отправит его дополнительным запросом PUT в фоне в тот же /Love/handler.psp
или любой другой URL на вашем сайте, который уже и сохранит токен. function()
, было, упомянул потому, что, как и var
, объявления функций function
«всплывают» наверх — ещё один неочевидный момент.
500 мб оперативки позволяют более крупные блоки, конечно.