:title="'Неработающий заголовок'"
var title = 'Неработающий заголовок';
var title = Неработающий заголовок;
- ошибочная конструкция нужно на стороне сервера обрабатывать и чистить от не нужного
Метод 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) Всегда ли он будет срабатывать?
После этой манипуляции начинается проблема:
// два объекта с одинаковыми данными
let a = { a: 1, b: 1 }
let b = { b: 1, a: 1 }
let isChange = JSON.stringify(a) !== JSON.stringify(b);
// isChange будет равно true
// потому что строка будет отличаться из-за разной позиции свойств объекта
<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) })
Версия пакета одинаковая что на сервере что на локалке