Viktor
этот цикл событий - легковесная штука в плане задач сам интерпретатор JS на тяжелых задачах тупит, поэтому даже шифрование типа bcrypt делегируется C/C++
Viktor
Viktor
то есть JS-интерпретатор - это скоросшиватель цикл событий - секретарь всю тяжелую работу делает "аутсорс"
Viktor
Благодаря этому разделению и неблокирующей архитектуре цикла событий, мы имеем хорошую производительность
Viktor
да, точно, спасибо за замечание
Nick
Народ, привет всем! Как реализовать отлов события ajaxSuccess без использования jQuery?
Nick
Но на какое событие?
Nick
не обнаружил
Nick
Чет мне подсказывает, что в JS такого нету
Nick
Я в принципе про event. Его не существует: https://developer.mozilla.org/en-US/docs/Web/Events
Maksim
нет такого события за пределами jquery
Nick
Ну вот
Nick
Я о чем
Nick
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/onreadystatechange
да, эт клево, знаю, но мне нужно не на мои события
Maksim
что значит не на мои события?
Viktor
глубоко технически я не знаю) к сожалению передо мной не стояло такой задачи, да и я скорее всего забыл бы, если бы прочитал когда-то
Viktor
поэтому я абстрагировался от конкретики
Viktor
что значит не на мои события?
мне вот тоже интересно
Nick
что значит не на мои события?
Я имею в виду, что у меня нет элемента, на котором будет что-то происходить. Нужно ловить все AJAX'ы в document. Как если бы было document.ajaxSuccess(...)
Nick
Если другой скрипт что-то куда-то запрашивает - я должен об этом знать
Nick
имеется в виду перехватить что возвращает из аякс запросов чужой код?
Не обязательно даже перехватывать. Просто должен знать, что, например, был вызван GET cart.js успешно
Viktor
аааа
Viktor
думаю, никак
Nick
Ну Жквери как-то это ж делает
Viktor
не уверен
Nick
$itg(document).ajaxSuccess(function(a, b, c) { if (c.url.indexOf('/cart/add.js') !== -1 || c.url.indexOf('/cart/change.js') !== -1 || c.url === '/cart.js' || c.url === '/cart/update.js') { itg_fsb_check_cart() } })
Viktor
jQuery - просто обертка над XMLHttpRequest
Viktor
хм
Nick
О как
Nick
Я понял, спасибо
Nick
Выходит он ловит только те события, которые сам и создает
Nick
Тогда все логично
Maksim
конечно, он их сам создает и сам ловит, просто в другом месте
Viktor
я нашел фрагмент
Viktor
ну в принципе тут "трава подстелена" для того, чтобы удобно вешать дополнительные слушатели на предмет сетевото ответа важно понимать, что тут вызов зарегистрирован глобально
Viktor
это скорее особый случай
Viktor
если сама процедура запроса запрятана где-то в коде (не привязана ни к чему, неглобальна), то к ней никак не получишь
Viktor
коротко говоря вопрос в следующем
Maksim
jq просто эталон говеного кода
Viktor
"есть ли у тебя доступ к контексту вызова, или нет"
Viktor
jq просто эталон говеного кода
да, по сути проблема чисто архитектурная
Viktor
слушай
Nick
конечно, он их сам создает и сам ловит, просто в другом месте
Я к чему это спрашиваю вообще. Есть магазины и у них есть темки. В зависимости от темы в корзину товар добавляется либо аяксом, либо запросом по клику на кнопку (кнопкой может быть все ( input, span, button)). И вот мне нужно ловить события добавления в корзину
Nick
Повесить хэндлеры на все элементы - это изврат
Viktor
а что происходит после основного запроса (из чужого скрипта)
Viktor
он должен оставлять "следы"
Maksim
не надо такой софт использовать )
Viktor
то есть может тебе отследить не сам запрос, а факт его выполнения (например, html обновился как-то)
Viktor
не надо такой софт использовать )
ну что поделать) у человека сейчас нет другого выбора
Viktor
я помню как сам шастал по форумам, и мне говорили "тебе надо все переписывать"
Nick
как вообще может быть связана тема и способ добавления товара в корзину?
Shopify. Там темы довольно масштабный кусок магазина
Nick
В этом и беда, я не знаю когда и откуда что вызовется, и поэтому должен ловить все
Nikolay
Если неохота либу цеплять, декорируй XMLHttpRequest
Nick
Огонь, это мысль. Спасибо
Nikolay
XMLHttpRequest.prototype.realSend = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function (value) { this.addEventListener('progress', () => { console.log("Loading"); }, false); this.realSend(value); };
Nikolay
Это ж жс, воруй-убивай.
MVD
как создать массив от 1 до n ?
Nikolay
как создать массив от 1 до n ?
'x'.repeat(10).split('')
Viktor
https://github.com/jpillora/xhook гугл всему голова ёпты
Спасибо большое за наводку. Возьму на заметку на всякий случай
Nikolay
А что значит от 1? О_о
Nikolay
Не пиши ничего в head и всё.
Viktor
ему нужен range походу
Xaxashutkin
как создать массив от 1 до n ?
Array(n).fill('').map((e, i) => i)
MVD
Спасибо
Viktor
Anonymous
Спасибо
Array(5).fill(x)
Viktor
Спасибо
Можешь так
MVD
Можешь так
Так и сделал)
Xaxashutkin
Вот это неожиданно Не знал о таком
Viktor
Array(5).fill(x)
человеку нужен диапазон чисел