Strategius 52 08/18/2016 10:17 AM Добрый день. Подскажите, пожалуйста, можно ли сделать так, чтобы модальные окна (к примеру окно входа) закрывались не только по нажатию на крестик в углу окна, но и просто по тапу на любое место экрана, как это сделано в popup-окнах? А то не очень удобно каждый раз тыкать в эту маленькую кнопку, хотелось бы закрывать его наугад. Никто не подскажет? :( В DLE насколько понял, такая же проблема, человек подсказал, что нужно скрипт дополнить, но какой и где... Неужели не реализуемо? Share this post Link to post Share on other sites
siv1987 2,623 08/18/2016 06:32 PM 1. Форум является некоммерческой составляющей проекта IPBSkins.ru. Вся помощь, которая здесь оказывается, добровольна и бесплатна. Не забывайте, что мы тратим свое свободное время. Будьте терпеливы, ожидая ответа. Если ответ не получен, "апать" тему с вопросом разрешается не ранее, чем через два дня после ее создания. 1 Share this post Link to post Share on other sites
Strategius 52 09/22/2016 04:34 PM А не подскажете хоть примерно, где копать, пожалуйста? Вроде это где-то в js-скриптах прописано? Share this post Link to post Share on other sites
Strategius 52 01/04/2017 05:25 PM А решение вообще возможно найти, или это в принципе невозможно, прописано глубоко в скриптах? Просто довольно неудобно закрывать модальные окна, каждый раз нажимая на маленькую кнопку в углу, хотелось бы, чтобы они закрывались как popup - просто при тапе на экран... Share this post Link to post Share on other sites
siv1987 2,623 01/04/2017 05:38 PM А решение вообще возможно найти, или это в принципе невозможно, прописано глубоко в скриптахНичего невозможного в принципе нет. Ищите если нечего делать, скрипты форума расположены в папке /public/js/. Share this post Link to post Share on other sites
Strategius 52 08/08/2017 07:39 AM Не получается найти этот момент :( А не подскажете приблизительно, в каком файле находится ответственный за это код? Share this post Link to post Share on other sites
newbie 1,721 08/08/2017 08:24 AM А не подскажете приблизительно, в каком файле находится ответственный за это код?public/js/ipb.js 1 Share this post Link to post Share on other sites
Strategius 52 08/08/2017 08:07 PM Нашел там такой код: this.closeLink = new Element('div', { 'id': this.id + '_close' } ).addClassName('popupClose').addClassName('clickable');Сейчас окно закрывается по нажатию на кнопку, к которой присвоен класс "popupClose". Не подскажете, пожалуйста, как сюда же добавить закрытие по клику мышкой по экрану? Share this post Link to post Share on other sites
newbie 1,721 08/09/2017 06:06 AM Сейчас окно закрывается по нажатию на кнопку, к которой присвоен класс "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 Share this post Link to post Share on other sites
Strategius 52 08/09/2017 10:03 AM (edited) нужно будет добавить 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) }); Edited August 9, 2017 by Strategius Share this post Link to post Share on other sites
newbie 1,721 08/09/2017 10:09 AM Я добавил их в функцию document_modal, но все равно закрывается только по нажатию на крестик...Я же написал нужно будет посмотреть функции handleDocumentClick и setDocumentEvent и определить при каких условиях/параметрах окно скрывается.Вы это сделали? Share this post Link to post Share on other sites
Strategius 52 08/09/2017 10:17 AM (edited) Вы это сделали?Да, конечно. Скрытие выполняется при условии, что окно не модальное: if( this.options.modal == false ){В противном случае скрытие выполняться не будет } else {Что я не так делаю? :( Edited August 9, 2017 by Strategius Share this post Link to post Share on other sites
newbie 1,721 08/09/2017 10:25 AM нужно будет посмотреть функции 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 Share this post Link to post Share on other sites
Strategius 52 08/09/2017 10:33 AM Теперь заработало! Огромное Вам спасибо, выручили, что бы без Вас делал! Share this post Link to post Share on other sites