нужно на стороне сервера обрабатывать и чистить от не нужного
Метод Window.getComputedStyle() возвращает объект, содержащий значения всех CSS-свойств элемента, полученных после применения всех активных таблиц стилей, и завершения базовых вычислений значений, которые они могут содержать. Некоторые CSS-свойства доступны через API, предоставляемые объектом, или индексацию по именам CSS-свойств.
function closeAccordion (accordion) {
// ... <= до вызова функции высота "auto"
accordion.style.height = `${accordion.scrollHeight}px` // Устанавливаем высоту
window.getComputedStyle(accordion, null).getPropertyValue('height') // Провоцируем вычисление новых изменений
accordion.style.height = '0' // Устанавливаем высоту
// ... => после выхода из функции рендер видит, что высота была Npx, стала 0px => запускает анимацию
}
1) Работает ли это во всех браузерах?
2) Всегда ли он будет срабатывать?
<dialog class="popup">
<div class="layer">
...
</div>
<dialog>
document.querySelector('.layer').addEventListener('click', (e) => e.stopPropagation());
document.querySelector('.popup').addEventListener('click', (e) => e.target.close());
// что-нибудь такое
const getImgDimensions = (file) => {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onload = () => {
const img = new Image();
img.onerror = reject;
img.onload = () => {
const height = img.height;
const width = img.width;
resolve({ height, width });
};
img.src = reader.result;
};
reader.readAsDataURL(file);
})
};
// =>>
getImgDimensions('https://.../image.jpg')
.then(response => console.log(response)); // { height, width }
.catch(err => console.log(err)); // error
Зачем это :
Если можно так :
makeProm("first")
.then(msg => {console.log('promised'); console.log(msg); return makeProm('second')})
// .then(/* тут Успех для промиса 'second' ... и запускаем промис 'first2.0' */)
// .catch(/* тут Ошибка для промиса 'second' */)
.then(msg => {console.log('promised'); console.log(msg); return makeProm('first2.0')})
// .then(/* тут Успех для промиса 'first2.0' ... и запускаем промис 'second2.0' */)
// .catch(/* тут Ошибка для промиса 'first2.0' */)
.then(msg => {console.log('promised'); console.log(msg); return makeProm('second2.0')})
// .then(/* тут Успех для промиса 'second2.0' */)
// .catch(/* тут Ошибка для промиса 'second2.0' */)
//
// В следующем блоке .then() мы уже потеряли данные из предыдущих промисов (тут будет последний промис)
// Тоже самое и с ".catch" блоками, если у каждого промиса не обработать ошибку,
// то ошибка может произойти в первом промисе, а перехватим её уже в последнем блоке,
// без идентификации из какого промиса мы словили ошибку
.then(msg => { console.log(msg) })
.catch(err => { console.log(err) })
Создание функционала сайта с помощью cookie? Целесообразно?
$('#phone').on('open:countrydropdown', function() {
$(this).removeAttr('maxlength');
})
placeholder = this._beforeSetNumber(placeholder); // Line: 1023
return this._cap(number); // Line: 1207
в котором обрезается placeholderlet str = getResult()
console.log(str) // Promise {status: "pending"}
Но ведь await по идее должен тормозить выполнение кода в функции
console.log(str) // Promise {status: "pending"}
console.log(str) // успешно
Для чего логический оператор «!» (NOT) возле переменной с булевым значением?
function example(user) {
// Если пользователя нет, то user->undefined->false
// Логическим оператором отрицания мы "поменяем" false на true и выйдем из функции
if (!user) return;
// Тут какой-то код, когда user->object (пользователь есть)
// т.к. user->object->true, то при отрицании в условие попадёт: user->object->true->false
}
check = true;
function handlerClick() {
check = !check;
// То есть берём текущее значение check, меняем на противоположное и присваиваем
}