#javascript #function #browser #resize #window-resize
Вопрос:
- Я хочу проверить ширину своего браузера/окна, если она ниже 669 пикселей.
- Когда он ниже 669px, я хочу запустить функцию только один раз.
- Тем не менее, каждый раз, когда я изменяю размер своего браузера более чем на 669 пикселей, функция why продолжает срабатывать при каждом изменении размера.
Как я могу запустить событие только один раз, как только пользователь наберет меньше 669px?
Вот код, с которым я работаю:
const checkWindowWdith = () => {
console.log(document.documentElement.clientWidth);
if (document.documentElement.clientWidth < 669) {
//DO SOMETHING HERE
};
};
//HERE I AM WAIT FOR THE USER TO FINISH RESIZING
var doit;
window.onresize = function(){
clearTimeout(doit);
doit = setTimeout(checkWindowWdith, 100);
};
Комментарии:
1. В зависимости от вашего кода вы можете просто добавить
window.onresize = null
//DO SOMETHING HERE
. Возможно, также потребуется снова отменить тайм-аут.
Ответ №1:
Я думаю, вам нужно создать var, для которого установлено значение false, если событие было запущено, и значение true, если он никогда не запускался подобным образом:
var firstStartEvent = true
const checkWindowWdith = () => {
console.log(document.documentElement.clientWidth);
if (document.documentElement.clientWidth < 669) {
firstStartEvent = false;
//DO SOMETHING HERE
};
};
//HERE I AM WAIT FOR THE USER TO FINISH RESIZING
var doit;
window.onresize = function(){
clearTimeout(doit);
if (firstStartEvent) {
doit = setTimeout(checkWindowWdith, 100);
}
};
Комментарии:
1. Вау, это сработало идеально. Большое тебе спасибо, Лукас! Хорошая простая и чистая идея. Я буду использовать это снова в будущем 🙂