Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2013, 13:13
Аватар для Webkid
Интересующийся
Отправить личное сообщение для Webkid Посмотреть профиль Найти все сообщения от Webkid
 
Регистрация: 01.07.2013
Сообщений: 18

Работает только в 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/
При клике на элемент изображения открывается поповер со списком, мне не нравится что при ресайзе браузера он ведет себя не адекватно при открытом состоянии поповера.
В данный момент работает второй вариант скрипта, но опять же только в Лисе.

Последний раз редактировалось Webkid, 01.07.2013 в 13:24.
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2013, 13:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А в чем неадекватность проявляется?
Смотри ситуация. Я смотрю сайт в свернутом состоянии. Вижу какие-то картинки. Кликаю. Тут разворачивается картинка. Я захотел развернуть на весь экран, ибо так удобней смотреть картинки, и тут сайт "затупляет" и перезагружается. Я в непонятках. Зачем это?
Ответить с цитированием
  #3 (permalink)  
Старый 01.07.2013, 14:04
Аватар для Webkid
Интересующийся
Отправить личное сообщение для Webkid Посмотреть профиль Найти все сообщения от Webkid
 
Регистрация: 01.07.2013
Сообщений: 18

Сообщение от danik.js Посмотреть сообщение
А в чем неадекватность проявляется?
Смотри ситуация. Я смотрю сайт в свернутом состоянии. Вижу какие-то картинки. Кликаю. Тут разворачивается картинка. Я захотел развернуть на весь экран, ибо так удобней смотреть картинки, и тут сайт "затупляет" и перезагружается. Я в непонятках. Зачем это?
Неадекватность в том что при ресайзе ( и если список страниц открыт) появляется горизонтальная полоса прокрутки т.к. блок элемента остается на своем положении.
При свернутом поповере все ок - ресайз без перезагрузки итд
Это только одна страница, пользователь не чувствует перезагрузки, к тому же она происходит всего одна и ТОЛЬКО при условии что список развернут. Да и к тому же пока что это .less при конвертации в .css все будет еще быстрее.
В принципе все это не критично, но для чистоплюйства хотелось бы это сделать. К тому же меня больше зацепил тот факт, что только в Лисе работает и я не пойму почему в остальных -нет
И черт его дери- почему селектор в первом примере не отрабатывает или сам скрипт из серии semicolon забыл иль скобку.
Пробовал еще скрывать список при mouseout (то есть, когда юзер тянется ресайзать у него полюбому выходит маусаут с главного враппера), этот вариант приемлемее и возможно я его оставлю, но это не решает вопроса конфликта браузеров скрипта перезагрузки

Последний раз редактировалось Webkid, 01.07.2013 в 14:45.
Ответить с цитированием
  #4 (permalink)  
Старый 01.07.2013, 16:59
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

А, я чета в лайтбокс полез)
Добавь на событие ресайза это:
$('.for-popover').each(function(){
    $(this).data('popover').hide()
})

Это скроет поповеры. Может есть возможность просто обновить их позиции - хз. Как вариант - скрыть открыте и тут же их показать
Ответить с цитированием
  #5 (permalink)  
Старый 01.07.2013, 17:26
Аватар для Webkid
Интересующийся
Отправить личное сообщение для Webkid Посмотреть профиль Найти все сообщения от Webkid
 
Регистрация: 01.07.2013
Сообщений: 18

Сообщение от danik.js Посмотреть сообщение
А, я чета в лайтбокс полез)
Добавь на событие ресайза это:
$('.for-popover').each(function(){
    $(this).data('popover').hide()
})

Это скроет поповеры. Может есть возможность просто обновить их позиции - хз. Как вариант - скрыть открыте и тут же их показать
При таком подходе появляется небольшой минус- при попытке снова кликнуть на изображение, список которого был скрыт -ничего не происходит, только при повторном клике выпадает.
Аналогичная ситуация если использовать остальные аналоги:
append() И remove()
менять css('display':'none')
fadeOut()
Думаю нужно смотреть в сторону того, как это генерится в Twitter bootstrap.

Например: при маусаут главного враппера вернуть поповерам состояние, в котором они были до клика. Прийдется поковырять.
И все-же главный вопрос: почему оно капризничает везде кроме Лисы ? =)
И еще, почему-то работает .onmouseout(), а .mouseout() -нет =))

Последний раз редактировалось Webkid, 01.07.2013 в 17:59.
Ответить с цитированием
  #6 (permalink)  
Старый 01.07.2013, 17:44
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Webkid
Да, но мне нужно чтобы они оставались когда пользователь вернется на страницу
А разве после location.reload() они снова появятся?
Сообщение от Webkid
После хайда если их вернуть .show или .fadeIn поповеры появятся все так-же не в том положении в котором я хочу
Только что попробовал - после hide / show позиция поповера обновляется (появляется в новом, корректном месте)
Ответить с цитированием
  #7 (permalink)  
Старый 01.07.2013, 18:02
Аватар для Webkid
Интересующийся
Отправить личное сообщение для Webkid Посмотреть профиль Найти все сообщения от Webkid
 
Регистрация: 01.07.2013
Сообщений: 18

Корректный релоад работает только в лисе. В противном случае он работает во всех браузерах, но не смотрит на условие наличия display block игнорит это и просто рефрешится при любом ресайзе, он должен себя рефрешить только при открытом любом поповере.

Вобщем, боль-мень рабочий вариант:
$('.container').hover(function(){
     $('.popover').hide();
});

при моусаут он почему-то скрывает даже не покинув пределы .container
неясен конфликт этих однотипных вещей, которые по отдельности работают, но при комбинации "дружат парами" скажем так

Последний раз редактировалось Webkid, 01.07.2013 в 18:26.
Ответить с цитированием
  #8 (permalink)  
Старый 01.07.2013, 18:18
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

В хроме ничего не происходит при ресайзе. Только ошибки сыпятся.
А при ручном рефреше поповеры не появляются вновь.
Да и незачем рефрешить, достаточно скрыть/показать поповеры.
Ответить с цитированием
  #9 (permalink)  
Старый 01.07.2013, 18:29
Аватар для Webkid
Интересующийся
Отправить личное сообщение для Webkid Посмотреть профиль Найти все сообщения от Webkid
 
Регистрация: 01.07.2013
Сообщений: 18

Да наверное прийдеться оставить просто хайд, правда недочет в виде лишнего клика при возвращении на тот список с которого был уведен курсор, немного мешает. Приходиться делать 2 клика чтоб снова открылся.
Перезалил
Ответить с цитированием
  #10 (permalink)  
Старый 01.07.2013, 19:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Так нужно вызвать hide и тутже show. Разве так не сработает?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему данный скрипт работает только в IE? hacker_007 Общие вопросы Javascript 4 08.09.2011 16:58
Скрипт работает только если подключать js в самом низу html! Pekkonen jQuery 3 26.01.2011 01:44
Интернет магазин работает только в IE Advokatura Internet Explorer 1 02.04.2010 12:45
В Firefox 3.5.5 не работает метод POST. Какие методы лечения? javascript_pupil AJAX и COMET 1 10.12.2009 20:34
Не работает AppendChild для div, причём только в IE _Kpot_ Internet Explorer 5 12.02.2009 10:55