Снова всех приветствую!
Итак я научился вызывать в модальном окне страницу через:
<a class="use-ajax" data-dialog-options="{"classes":{"ui-dialog": "myclass"}}" data-dialog-type="modal" href="/mylink">Ссылка</a>
Как делать перезагрузку страницы, всякий раз, когда это окно закрывается?
Написал функцию в JS:
Drupal.behaviors.mytheme1Behavior = {
attach: function(context, settings) {
$(".myclass").on("dialogclose", function(event, ui) {
location.reload();
});
}
};
})(jQuery);
Работает почему-то через раз
Комментарии
Странные у тебя задачи. Обычно, модальные окна для того и используют, чтобы НЕ перезагружать текущую страницу
У меня не задачи, а методы странные. Я экспериметирую
Что в консоли JS ?
А что там должно или не должно быть? Красным вроде ничего непишет.
Собственно я в модальном окне вывожу корзину комерца. После того, как меняю заказ, и закрываю модальное окно хочу чтоб блок с суммой заказа обновлялся. Работает. Через раз
Плохо, что ничего не пишет.
Как именно подключаете приведённый JS?
Как preload-библиотеку или грузится вместе с формой в модале (т.е. вместе с AJAX-содержимым?
Если честно не могу выловить момент, когда код страницу НЕ перезагружает. Видимо от фазы луны. Ну или я многого не знаю. Буду разбираться.
Может лучше блок через аякс перезагружать, а не всю страницу?
Держи тогда еще "головняк":
Нужно так же обновлять страницу между вкладками браузера
Как-то не волнует как обновлять между вкладками. Сомневаюсь что кто-то будет "сеанс одновременной игры" устраивать при покупках.
Пока волнует, что когда модальное окно вызывается - сам сайт скроллится вниз. Можно ли это через CSS или еще как-то победить?
Васёк, это нормальное поведение, практически половины юзеров на десктопах. Им привычней делать сравнения/покупки товаров в разных вкладках... И даже, никакие compare-реализации им неинтересны.
Понял. Скролит вниз, т.к. задал для модала в стилях свои значения left и top с !important.
А можно как-то сделать, чтоб модальное окно вызывалось без
<div style="top: 100px; left: 443.5px;"
?
Помогло
top: auto !important;
margin-top: 50px;
}