Показать сообщение отдельно
  #1 (permalink)  
Старый 22.12.2011, 15:19
Новичок на форуме
Отправить личное сообщение для VitalikPro Посмотреть профиль Найти все сообщения от VitalikPro
 
Регистрация: 22.12.2011
Сообщений: 7

Срабатывание скрипта в разные моменты при загрузки в разных браузерах
При загрузке, у меня выполняется скрипт. Который ровняет по высоте 2 колонки.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>

function setEqualHeight(columns)
{
var tallestcolumn = 0;
columns.each(
function()
{
currentHeight = $(this).height();
if(currentHeight > tallestcolumn)
{
tallestcolumn = currentHeight;
}
}
);
columns.height(tallestcolumn);
}


Для срабатывания данного скрипта вызываю функцию

setEqualHeight($("#main, #block_right"));


Где
#main
#block_right
id элементов которые мне нужно выровнять. Тут все хорошо срабатывает.

Но при загрузки галереи картинки подгружаются некоторое время.
Если вставить setEqualHeight в раздел

$(document).ready(function () {

});


То скрипт срабатывает где то по середине, устанавливая высоту, а картинки продолжают грузиться.

Вставляю в
window.onload = function(){
setEqualHeight($("#main, #block_right"));
}


Но вот незадача, данная конструкция работает в конце загрузки только в браузере chrom. Во всех остальных срабатывает на середине загрузки и происходит выше описанный эффект.

Для срабатывания в IE(и по идее остальных браузерах) функцию setEqualHeight необходимо поместить в низ страницы.

Но если оставить все как есть, то при загрузке в chrom скрипт в низу страницы срабатывает очень рано, и опять вызывает нарушение верстки.

Что бы это исключить, я определяю является ли браузер chrom.
Вот этой строкой.
/chrome/.test(navigator.userAgent.toLowerCase())

Которая выдает false или true.

Таким образом у меня получается.

//в начале страницы
window.onload = function(){
if (/chrome/.test(navigator.userAgent.toLowerCase())) {
setEqualHeight($("#main, #block_right"));
}
}  

//в конце страницы
if (!/chrome/.test(navigator.userAgent.toLowerCase())) {
setEqualHeight($("#main, #block_right"));
}


Проверял в браузерах
chrome - работает
EI - работает
FireFox - работает через раз. Возникает преждевременное срабатывание(верстка разезжаеться). Не часто, редко. Понят в какой момент не могу.
Opera - работает аналогично FireFox.

Для загрузки картиной ещё используется.
Colorbox и Lazyload.

Подскажите, как доработать для работы в FireFox, Opera.
А по существу считаю, что слишком много нагородил. Может кто то подскажет решение проще.
Ответить с цитированием