Работает только в FireFox
Задача: При ресайзе браузера сделать релоад страницы при условии что в элементе атрибут style имеет display: block
(использую jQuery 2.0.0) Как подсказывает моя логика это сделать, но это конечно-же не работает: if ($('.popover[style*="block"]')) { window.setTimeout('location.reload()', 100); } Как это работает но только в FireFox if ($('.popover').attr("style").contains("block")) { window.setTimeout('location.reload()', 100); } Какие есть мысли по поводу лечения? Живой пример: http://vzazerkalie.com/portf/ При клике на элемент изображения открывается поповер со списком, мне не нравится что при ресайзе браузера он ведет себя не адекватно при открытом состоянии поповера. В данный момент работает второй вариант скрипта, но опять же только в Лисе. |
А в чем неадекватность проявляется?
Смотри ситуация. Я смотрю сайт в свернутом состоянии. Вижу какие-то картинки. Кликаю. Тут разворачивается картинка. Я захотел развернуть на весь экран, ибо так удобней смотреть картинки, и тут сайт "затупляет" и перезагружается. Я в непонятках. Зачем это? |
Цитата:
При свернутом поповере все ок - ресайз без перезагрузки итд Это только одна страница, пользователь не чувствует перезагрузки, к тому же она происходит всего одна и ТОЛЬКО при условии что список развернут. Да и к тому же пока что это .less при конвертации в .css все будет еще быстрее. В принципе все это не критично, но для чистоплюйства хотелось бы это сделать. К тому же меня больше зацепил тот факт, что только в Лисе работает и я не пойму почему в остальных -нет И черт его дери- почему селектор в первом примере не отрабатывает или сам скрипт из серии semicolon забыл иль скобку. Пробовал еще скрывать список при mouseout (то есть, когда юзер тянется ресайзать у него полюбому выходит маусаут с главного враппера), этот вариант приемлемее и возможно я его оставлю, но это не решает вопроса конфликта браузеров скрипта перезагрузки |
А, я чета в лайтбокс полез)
Добавь на событие ресайза это: $('.for-popover').each(function(){ $(this).data('popover').hide() }) Это скроет поповеры. Может есть возможность просто обновить их позиции - хз. Как вариант - скрыть открыте и тут же их показать |
Цитата:
Аналогичная ситуация если использовать остальные аналоги: append() И remove() менять css('display':'none') fadeOut() Думаю нужно смотреть в сторону того, как это генерится в Twitter bootstrap. Например: при маусаут главного враппера вернуть поповерам состояние, в котором они были до клика. Прийдется поковырять. И все-же главный вопрос: почему оно капризничает везде кроме Лисы ? =) И еще, почему-то работает .onmouseout(), а .mouseout() -нет =)) |
Цитата:
Цитата:
|
Корректный релоад работает только в лисе. В противном случае он работает во всех браузерах, но не смотрит на условие наличия display block игнорит это и просто рефрешится при любом ресайзе, он должен себя рефрешить только при открытом любом поповере.
Вобщем, боль-мень рабочий вариант: $('.container').hover(function(){ $('.popover').hide(); }); при моусаут он почему-то скрывает даже не покинув пределы .container неясен конфликт этих однотипных вещей, которые по отдельности работают, но при комбинации "дружат парами" скажем так |
В хроме ничего не происходит при ресайзе. Только ошибки сыпятся.
А при ручном рефреше поповеры не появляются вновь. Да и незачем рефрешить, достаточно скрыть/показать поповеры. |
Да наверное прийдеться оставить просто хайд, правда недочет в виде лишнего клика при возвращении на тот список с которого был уведен курсор, немного мешает. Приходиться делать 2 клика чтоб снова открылся.
Перезалил |
Так нужно вызвать hide и тутже show. Разве так не сработает?
|
Часовой пояс GMT +3, время: 15:52. |