На данный вопрос уже ответили:
Существует такой ООП код для вызова модальных окон с разных страниц сайта. Столкнулся с проблемой, что код не работает в IE11
.
Но оно и понятно, ведь IE и Opera(на самом деле работает) не поддерживает стрелочные функции.
function Modal(modalBlock, buttonClick, buttonClose) {
this.modalBlock = document.querySelector(modalBlock);
this.buttonClick = document.querySelectorAll(buttonClick);
this.modalClose = document.querySelector(buttonClose);
this.currentClass = this.modalBlock.getAttribute('class');
this.ready = this.modalBlock && this.buttonClick && this.modalClose;
if (!this.ready) {
return;
}
for (var i = 0; i < this.buttonClick.length; i++) {
this.buttonClick[i].onclick = () => {
if (this.modalBlock.classList.contains(this.currentClass + '--active-js') == false) {
this.modalBlock.classList.add(this.currentClass + '--active-js');
}
}
}
this.modalClose.onclick = () => {
if (this.modalBlock.classList.contains(this.currentClass + '--active-js') == true) {
this.modalBlock.classList.remove(this.currentClass + '--active-js');
}
}
this.modalBlock.onclick = (event) => {
console.log(event);
var contentCurrentClass = this.currentClass;
if (event.target.classList.contains(contentCurrentClass + '--active-js') == true) {
this.modalBlock.classList.remove(contentCurrentClass + '--active-js');
}
}
}
var appModal = new Modal('.modal-wrapper', '.button-openform--js', '.modal__close');
var videoModal = new Modal('.modal-wrapper', '.play-video', '.modal__close');
var appModalAccept = new Modal('.modal-wrapper', '.phone-number__accept', '.modal__close');
var appModalAcceptMain = new Modal('.modal-wrapper-two', '.phone-number__accept', '.modal__close--application');
Каким образом можно правильно заменить стрелочные функции на обычные? В ООП не силен, но насколько я понял, теряется контекст, если просто влепить туда анонимную функцию (Также буду очень благодарен, кто сможет дать хорошую статью по данному поводу, т.е. контекст в анонимных функциях и т.п.).
Одно из старых решений подобной проблемы является присвоение контекста в переменную self:
function Modal(modalBlock, buttonClick, buttonClose) {
var self = this;
.......
}
И затем, все this для onclick заменяете на self, примерно это будет выглядеть так:
this.modalClose.onclick = function() {
if (self.modalBlock.classList.contains(this.currentClass + '--active-js') == true) {
self.modalBlock.classList.remove(this.currentClass + '--active-js');
}
}
Прошу прощения если где то ошибся, накидал по памяти на коленке, уже давненько этим не пользовался.
А вообще, как и написал в комментарии к вопросу, подумайте о том, не проще ли просто подключить babel?
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем привет! Задался я вопросом создания анимации некоего планшета который состоит из 3 частей
Хочу установить стандартный webpack-simple vue проектдалаю по инструкции
подскажите пожалуйста как реализовать такой момент, что бы фиксированное меню не закрывало последнюю секцию на страничке, а пропадало или...