Strategius 52 08/18/16 10:17 Добрый день. Подскажите, пожалуйста, можно ли сделать так, чтобы модальные окна (к примеру окно входа) закрывались не только по нажатию на крестик в углу окна, но и просто по тапу на любое место экрана, как это сделано в popup-окнах? А то не очень удобно каждый раз тыкать в эту маленькую кнопку, хотелось бы закрывать его наугад. Никто не подскажет? :( В DLE насколько понял, такая же проблема, человек подсказал, что нужно скрипт дополнить, но какой и где... Неужели не реализуемо? Поделиться сообщением Ссылка на сообщение
siv1987 2628 08/18/16 18:32 1. Форум является некоммерческой составляющей проекта IPBSkins.ru. Вся помощь, которая здесь оказывается, добровольна и бесплатна. Не забывайте, что мы тратим свое свободное время. Будьте терпеливы, ожидая ответа. Если ответ не получен, "апать" тему с вопросом разрешается не ранее, чем через два дня после ее создания. 1 Поделиться сообщением Ссылка на сообщение
Strategius 52 09/22/16 16:34 А не подскажете хоть примерно, где копать, пожалуйста? Вроде это где-то в js-скриптах прописано? Поделиться сообщением Ссылка на сообщение
Strategius 52 01/04/17 17:25 А решение вообще возможно найти, или это в принципе невозможно, прописано глубоко в скриптах? Просто довольно неудобно закрывать модальные окна, каждый раз нажимая на маленькую кнопку в углу, хотелось бы, чтобы они закрывались как popup - просто при тапе на экран... Поделиться сообщением Ссылка на сообщение
siv1987 2628 01/04/17 17:38 А решение вообще возможно найти, или это в принципе невозможно, прописано глубоко в скриптахНичего невозможного в принципе нет. Ищите если нечего делать, скрипты форума расположены в папке /public/js/. Поделиться сообщением Ссылка на сообщение
Strategius 52 08/08/17 07:39 Не получается найти этот момент :( А не подскажете приблизительно, в каком файле находится ответственный за это код? Поделиться сообщением Ссылка на сообщение
newbie 1723 08/08/17 08:24 А не подскажете приблизительно, в каком файле находится ответственный за это код?public/js/ipb.js 1 Поделиться сообщением Ссылка на сообщение
Strategius 52 08/08/17 20:07 Нашел там такой код: this.closeLink = new Element('div', { 'id': this.id + '_close' } ).addClassName('popupClose').addClassName('clickable');Сейчас окно закрывается по нажатию на кнопку, к которой присвоен класс "popupClose". Не подскажете, пожалуйста, как сюда же добавить закрытие по клику мышкой по экрану? Поделиться сообщением Ссылка на сообщение
newbie 1723 08/09/17 06:06 Сейчас окно закрывается по нажатию на кнопку, к которой присвоен класс "popupClose". Не подскажете, пожалуйста, как сюда же добавить закрытие по клику мышкой по экрану? Разбирайтесь :)Дам подсказки.Если popup-окно не модальное, то его можно закрывать, кликнув вне области окна. if( this.options.modal == false ){ new Effect.Appear( $( this.wrapper ), { duration: 0.3, afterFinish: function(){ if( Object.isFunction( this.callbacks['afterShow'] ) ) { this.callbacks['afterShow']( this ); } }.bind(this) } ); this.document_event = this.handleDocumentClick.bindAsEventListener(this); this.setDocumentEvent(); } else { new Effect.Appear( $('document_modal'), { duration: 0.3, to: this.options.modalOpacity, afterFinish: function(){ new Effect.Appear( $( this.wrapper ), { duration: 0.4, afterFinish: function(){ if( Object.isFunction( this.callbacks['afterShow'] ) ) { this.callbacks['afterShow']( this ); } }.bind(this) } ); }.bind(this) }); }Строки this.document_event = this.handleDocumentClick.bindAsEventListener(this); this.setDocumentEvent();То есть Вам нужно будет посмотреть функции handleDocumentClick и setDocumentEvent и определить при каких условиях/параметрах окно скрывается. Там по паре строк кода.Естественно нужно будет добавить 2 строки в else, либо вынести из if 1 Поделиться сообщением Ссылка на сообщение
Strategius 52 08/09/17 10:03 (изменено) нужно будет добавить 2 строки в else, либо вынести из ifТ.е. эти 2 строки отвечают за скрытие окна при нажатии вне его области? Я добавил их в функцию document_modal, но все равно закрывается только по нажатию на крестик... new Effect.Appear( $('document_modal'), { duration: 0.0, to: this.options.modalOpacity, afterFinish: function(){ new Effect.Appear( $( this.wrapper ), { duration: 0.0, afterFinish: function(){ if( Object.isFunction( this.callbacks['afterShow'] ) ) { this.callbacks['afterShow']( this ); } }.bind(this) } ); this.document_event = this.handleDocumentClick.bindAsEventListener(this); this.setDocumentEvent(); }.bind(this) }); Изменено 9 августа 2017 пользователем Strategius Поделиться сообщением Ссылка на сообщение
newbie 1723 08/09/17 10:09 Я добавил их в функцию document_modal, но все равно закрывается только по нажатию на крестик...Я же написал нужно будет посмотреть функции handleDocumentClick и setDocumentEvent и определить при каких условиях/параметрах окно скрывается.Вы это сделали? Поделиться сообщением Ссылка на сообщение
Strategius 52 08/09/17 10:17 (изменено) Вы это сделали?Да, конечно. Скрытие выполняется при условии, что окно не модальное: if( this.options.modal == false ){В противном случае скрытие выполняться не будет } else {Что я не так делаю? :( Изменено 9 августа 2017 пользователем Strategius Поделиться сообщением Ссылка на сообщение
newbie 1723 08/09/17 10:25 нужно будет посмотреть функции handleDocumentClick handleDocumentClick: function(e) { Debug.write( 'document click: ' + Event.element(e).id); if( !Event.element(e).descendantOf( this.wrapper ) && ( this.options.attach && ( Event.element(e).id != this.options.attach.target.id ) ) ) { this.hide(e); } },Вариант if( !Event.element(e).descendantOf( this.wrapper ) && ( this.options.attach && ( Event.element(e).id != this.options.attach.target.id ) ) )заменить на if( !Event.element(e).descendantOf( this.wrapper ) && ( this.options.modal || ( this.options.attach && ( Event.element(e).id != this.options.attach.target.id ) )) ) 1 Поделиться сообщением Ссылка на сообщение
Strategius 52 08/09/17 10:33 Теперь заработало! Огромное Вам спасибо, выручили, что бы без Вас делал! Поделиться сообщением Ссылка на сообщение