Странное поведение CSS в Chrome для Facebook, как окно

Я испытываю это странное поведение в Chrome (я тестировал версии для Windows и Linux). Я также тестировал его в Firefox, но он работает правильно.

У меня есть Facebook Like Box, отображаемый в боковом виджете Wordpress. (Он использует официальный плагин Facebook, хотя, если что-то не так с его выводом, я могу легко изменить его самостоятельно). На самом деле то, что он делает, включает iFrame.

  1. Под логотипом Facebook в нижней части виджета появляется странное белое поле. Странно то, что когда я навожу курсор на заголовок, который просто меняет свой цвет, поле внезапно автоматически настраивает высоту на правильную. Вы можете увидеть это здесь, где виджет Facebook Like Box справа (третье поле сверху) содержит некоторые белая прокладка. Наведите указатель мыши на кнопку «Нравятся мы?» заголовок, и он внезапно регулирует высоту до правильной.

  2. Более серьезная проблема возникает, когда пользователь переходит на другую страницу и возвращается на страницу. Открыв страницу, введите другой URL-адрес в адресную строку, например www.google.com. После загрузки просто нажмите кнопку «Назад» в браузере Chrome. Вы вдруг заметите, что блок «Нравится» Facebook не отображается так, как раньше, а отображается в гораздо более мелком окне, и появляются уродливые полосы прокрутки.

По какой причине это происходит? Впервые я сталкиваюсь с этими странными проблемами, которые возникают при, казалось бы, несвязанном поведении (наведение на ссылку и нажатие назад).


person jbx    schedule 20.01.2014    source источник
comment
в div.servicebox { ....ширина: 303px; высота: авто; переполнение: авто;} удалить переполнение: авто; попробуйте это один раз.   -  person 3bu1    schedule 23.01.2014
comment
в div.servicebox { ....ширина: 303px; высота: авто; overflow: auto;} удалить overflow:auto;(для второй проблемы)height:280px;(точная высота для 1-й проблемы) попробуйте один раз.   -  person 3bu1    schedule 23.01.2014
comment
@ 3bu1 Если я удалю overflow: auto, он внезапно вытечет из коробки, что сделает его еще хуже. Точная высота, да, я могу попробовать это, но побеждает весь смысл.   -  person jbx    schedule 23.01.2014
comment
Не удалось воспроизвести это поведение с помощью Chrome версии 32.0.1700.76 m в Windows 7.   -  person QuestionMarks    schedule 23.01.2014
comment
Также невозможно воспроизвести с помощью Safari 5.1.7, так что, скорее всего, это не проблема вебкита.   -  person QuestionMarks    schedule 23.01.2014
comment
@JacquesGoulet Я создаю проблему в Chrome версии 32.0.1700.76 m в Windows 7 и версии 32.0.1700.77 в Ubuntu. Некоторые пользователи также сообщили о проблеме. Помните, что вам нужно пойти куда-то еще, а затем нажмите Назад. Да, может быть проблема в Хроме. Не уверен, что вызывает это, хотя.   -  person jbx    schedule 23.01.2014
comment
Я нажал обратно, все равно ничего.   -  person QuestionMarks    schedule 23.01.2014
comment
У вас включены какие-либо плагины Chrome? Если да, то попробуйте их отключить.   -  person QuestionMarks    schedule 23.01.2014
comment
Абсолютно никаких плагинов. Некоторые пользователи также жаловались на такое поведение. Вы уверены, что смотрите в правильном месте? Мне удалось легко восстановить это в 2 браузерах (перейдите на веб-сайт, введите google.com в поле URL-адреса, нажмите назад, вуаля, в окне «Нравится» отображается плохо)   -  person jbx    schedule 24.01.2014
comment
Уверяю вас, я знаю, как пользоваться браузером.   -  person QuestionMarks    schedule 24.01.2014
comment
В Chrome перейдите в «Настройки» -> «Дополнительные настройки» -> «Сбросить настройки браузера». Посмотрим, изменит ли это что-нибудь.   -  person QuestionMarks    schedule 24.01.2014
comment
@JacquesGoulet Пользователи сайта жаловались на такое же поведение, так что это не проблема моего браузера. Я не говорю, что вы не знаете, как перемещаться по браузеру, я просто спросил вас, следовали ли вы процедуре создания сценария.   -  person jbx    schedule 25.01.2014


Ответы (1)


Насколько я вижу, в вашем поле servicebox (которое содержит подобное поле) у вас есть div с классом serviceheading, который имеет float: left;. Я предполагаю, что это может вызвать у вас проблемы, потому что сам servicebox не имеет никаких свойств для содержания поплавков. Вы можете попробовать добавить clearfix решение для .servicebox или попробовать добавить overflow: hidden; в качестве быстрого исправления. Это может решить вашу первую проблему.

Что касается второго вопроса. Я бы попробовал добавить некоторые свойства, чтобы проверить, помогают ли они.

  • сделайте .fb_iframe_widget очистку плавающего логотипа с помощью clear: left; Это сделает этот блок всегда под логотипом.
  • сделать .fb_iframe_widget блочным элементом с помощью display: block; (сейчас это inline-block). Он автоматически присвоит ему ширину родительского элемента (303 пикселя).
  • сделайте следующий селектор .fb_iframe_widget iframe и добавьте к нему max-width: 100%;. Эти стили гарантируют, что iframe не станет больше, поэтому кнопки прокрутки вероятно исчезнут.

Надеюсь, это поможет.

ОБНОВЛЕНИЕ

По какой-то причине, когда нажата кнопка «Назад», <span> внутри .fb_iframe_widget устанавливалась на высоту и ширину 0px. Следующее решает проблему, хотя это немного взломано, а высота и ширина должны быть жестко запрограммированы:

.fb_iframe_widget iframe
{
    height: 230px !important;
    width: 300px !important;    
}

.fb_iframe_widget span
{
    height: 230px !important;
    width: 300px !important;    
}
person skip405    schedule 24.01.2014
comment
Я попробовал ваше решение. Кажется, первые проблемы решены. А вот со вторым пока проблема. Полосы прокрутки теперь исчезли, но теперь поле выглядит пустым. - person jbx; 25.01.2014
comment
Хм, а что если попробовать добавить в виджет свойство min-height? Вы увидите iframe? - person skip405; 25.01.2014
comment
Нет, он просто отображает пустое поле виджета. Вы можете увидеть это сами, если хотите, с указанными выше настройками. В Chrome вы можете просто выполнить «Проверить элемент» и добавить свойство height или min-height, поле увеличится в высоту, но это будет просто пустое белое поле. Самое странное во всем этом, почему это происходит при нажатии кнопки «Назад»! - person jbx; 26.01.2014
comment
Я думаю, что есть разница между добавлением min-height после загрузки страницы и до нее. Попробуйте добавить его в таблицу стилей, а затем протестируйте ошибку кнопки «Назад». - person skip405; 26.01.2014
comment
Пробовал, теперь видно. Он просто отображает пустое поле с минимальной высотой. Тем не менее содержимое виджета Facebook не отображается, когда вы нажимаете кнопку «Назад» :( - person jbx; 27.01.2014
comment
Кажется, что происходит то, что Chrome устанавливает высоту и ширину iframe на 0px. Я пытался установить его явно, а также поставить !important следующим образом: .fb_iframe_widget iframe { height: 230px !important; width: 300px !important; } но он все еще устанавливается на 0px - person jbx; 27.01.2014
comment
Ну наконец то! Мне удалось это исправить. До сих пор не знаю, почему это происходило, но, по крайней мере, теперь это решено. Я добавил следующее: .fb_iframe_widget span { height: 230px !important; width: 300px !important; } и теперь все работает нормально! - person jbx; 27.01.2014
comment
Я добавил решение, которое сработало для меня, чтобы принять ваше решение как правильное. - person jbx; 27.01.2014