onLeave: () => customEmitter.emit('onLeave', ...arguments),
afterLoad: () => customEmitter.emit('afterLoad', ...arguments),
...
customEmitter.on('event', doWhatever);
class Menu { // Menu
constructor(name, hod) { // construct
this.name = name;
this.hod = hod;
this.AlertOn = function() {
alert(this.hod);
}
countMenu++;
} // endconstruct
} // endMenu
countMenu = 0;
menu1 = new Menu("Меню 1", "1");
menu2 = new Menu("Меню 2", "2");
menu3 = new Menu("Меню 3", "3");
menu4 = new Menu("Меню 4", "4");
for (j = 1; j <= countMenu; j++) {
const menu = window["menu" + j]; // terrible
const div = document.createElement('button');
div.className = "buttonMenu";
div.innerHTML = menu.name;
div.addEventListener('click', menu.AlertOn.bind(menu));
allbody.append(div);
}
таймеры как шли так и идут
все данные как были так и есть
отключить их загрузку
<body>
<script id="mobile-check">
/* Можно ещё проверять по разрешению экрана, или добавить больше браузеров */
function isMobile() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}
const me = document.querySelector('#mobile-check');
const pcScripts = ['./script1.js', './script2.js'];
if (isMobile() === false) {
let target = me;
for (const path of pcScripts) {
const node = document.createElement('script');
node.src = path;
target.insertAdjacentElement('afterend', node);
target = node;
}
}
</script>
</body>
alert(1);
// eslint-disable-next-line no-unused-vars
function unused() {}
window.WebSocketCopy = window.WebSocket;
window.WebSocket = function(a,b,c) { // Притворяемся WebSocket
// В a,b,c - аргументы, которые обычно передаются в экземпляр класса
// Пример: a = "ws://35.26.64.245";
// Создаём реальный экземпляр
const socketInstance = new WebSocketCopy(a,b,c);
// Дальше делаем всё что нам нужно с инстанцией вэбсокета
socketInstance.addEventListener('message', function (event) {
console.log(event);
});
// И возвращаем обработанный результат
return socketInstance;
}