Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.12.2011, 13: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.
А по существу считаю, что слишком много нагородил. Может кто то подскажет решение проще.
Ответить с цитированием
  #2 (permalink)  
Старый 22.12.2011, 15:12
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Невозможно отследить полную загрузку картинок в прелоад массив а также на страницу-уже сработало событие онлоад страницы, а картинки могут ещё грузиться.
Но, можно отследить непосредственно загрузку каждого изображения на страницу.
То есть каждой картинке обработчик онлоад, в обработчике счётчик,как только все загружены -менять высоту

Последний раз редактировалось dmitriymar, 22.12.2011 в 15:16.
Ответить с цитированием
  #3 (permalink)  
Старый 22.12.2011, 15:17
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от dmitriymar
уже сработало событие онлоад страницы, а картинки могут ещё грузиться.
А какого фига? Я ошибаюсь, или onload обязано дожидаться загрузки всего, нет?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #4 (permalink)  
Старый 22.12.2011, 15:44
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,589

Сообщение от trikadin
А какого фига? Я ошибаюсь, или onload обязано дожидаться загрузки всего, нет?
попробуй)) была задача и была проблема что оnload не отслеживает загрузку прелоада.

Насколько я понимаю onload отслеживает создание dom,но не отслеживает полную загрузку всех его элементов

таже фигня была и с картинками на странице(может сейчас профиксили).
попробуй загрузить "тяжёлую" картинку и на оnload страницы -брось алерт.конечно скорость инета будет влиять,но результаты в разных браузерах тебя возможно и сейчас порадуют

Последний раз редактировалось dmitriymar, 22.12.2011 в 15:50.
Ответить с цитированием
  #5 (permalink)  
Старый 22.12.2011, 15:52
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

trikadin,
Ну загрузка изображений из скрипта не влияет на window.onload, точно так как динамические теги скрипт.
Надо просто подгружать самому и проверять подгрузку тоже самому.
Если я конечно правильно понял проблему.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #6 (permalink)  
Старый 22.12.2011, 15:58
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от Nekromancer
Ну загрузка изображений из скрипта не влияет на window.onload
Да я ступил чё-то. Тут речь о динамической загрузке, а я про нормальную подумал...
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #7 (permalink)  
Старый 23.12.2011, 12:24
Новичок на форуме
Отправить личное сообщение для VitalikPro Посмотреть профиль Найти все сообщения от VitalikPro
 
Регистрация: 22.12.2011
Сообщений: 7

Я так понимаю вопрос остался открытым.

На данные момент реализацию сделал на CSS. Но пожертвовал удобством генерации страниц. Приходиться кое что догружать и просчитывать.

То есть. Мне нужно как то определить, загрузилась картинка или нет. Проверить статус картинки, это возможно сделать?
Ответить с цитированием
  #8 (permalink)  
Старый 23.12.2011, 18:22
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

image.onload= function(){}
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #9 (permalink)  
Старый 23.12.2011, 19:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,471

Сообщение от VitalikPro
у меня выполняется скрипт. Который ровняет по высоте 2 колонки
А разметкой и ЦССом "равнять" не получается?
Ответить с цитированием
  #10 (permalink)  
Старый 29.12.2011, 13:02
Новичок на форуме
Отправить личное сообщение для VitalikPro Посмотреть профиль Найти все сообщения от VitalikPro
 
Регистрация: 22.12.2011
Сообщений: 7

Спасибо trikadin, за подсказку. Вполне рабочий вариант. Например можно отслеживать высоту картинки. Если все отлично от 0, можно вызывать функцию и ровнять колонки.
Я не стал применять. Картинки могут грузиться неравномерно, поэтому отслеживать придется все, а эта ресурсоемко.
Оставил вариант с CSS, изменив немного первоначальную верстку страницы.
Но кому то может пригодиться. Спасибо всем за помощь.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Некорректная работа скрипта в разных браузерах en-k Общие вопросы Javascript 2 15.03.2011 13:54
Работа скрипта в разных браузерах estonec Internet Explorer 5 24.03.2010 12:39
Срабатывание скрипта при загрузке страницы bormax Общие вопросы Javascript 3 03.04.2008 08:57