2012-01-26 1 views
0

Я столкнулся с серьезной проблемой времени загрузки с jcarousel на Chrome и Safari. На Firefox страница загружается менее чем за 1 секунду, в Chrome и Safari она занимает до 10 секунд.Jcarousel Время загрузки вопрос о Safari/Chrome

Карусель отображается на домашней странице с множеством вкладок. В Chrome/Safari открывается страница и отображает все вкладки, кроме вкладки карусели, но замерзает в течение 10 секунд, пока не отобразится вкладка карусели. Поэтому я попытался переместить блок, который отображает карусель внутри вызова Ajax (вызов Ajax записывает элементы li и отправляет их обратно на ответ), полагая, что вкладка карусели может занять столько, сколько она хочет открыть, пока другие элементы были загружены сначала, по крайней мере, но безрезультатно (страница все еще зависает).

Это мой Аякса вызов:

$.ajax({ 
    url:"../ajaxServices/display_showcase.php", 
    success : function(data){ 
    $('#mycarousel').html(data); 
    $('#mycarousel').jcarousel({ 
     vertical: true, 
     scroll: 1 
    }); 
} 
}); 

я заметил две вещи:.

  1. Если удалить $ ('# mycarousel') jcarousel вызова от ответа, страница быстро открывает ,
  2. Если я удаляю теги изображений из файла li (внутри файла php ajax), страница открывается быстро. Однако я столкнулся с проблемой, даже когда в карусели есть одно изображение и обратите внимание, что все изображения относительно невелики (< 40 kb в целом).

Что странно, что Firefox это работает прекрасно ...

Любая помощь о том, как отлаживать или решить этот вопрос будет высоко оценен ...

ответ

1

Во-первых, убедитесь, что ваш изображения получили ширину и высоту в пикселях.

Во-вторых, также пытаются обернуть Ajax вызова в window.load заявлении как таковой: $(window).load(function() { // Your jcarousel call });

Если вы используете jquery.carousel.js, то поиск блоков, которые предназначены для фиксации некоторые старые, но теперь устаревшие условия браузера. Например, вокруг линии 184, комментарии следующего jquery.carousel.js:

/*if ($.browser.safari) { 
    this.buttons(false, false); 
    $(window).bind('load', function() { self.setup(); }); 
} else */ 
    this.setup(); 

и вокруг линий 858 комментария следующего:

/*if (p == 'marginRight' && $.browser.safari) { 
     var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2; 

     $.swap(el, old, function() { oWidth = el.offsetWidth; }); 

     old['marginRight'] = 0; 
     $.swap(el, old, function() { oWidth2 = el.offsetWidth; }); 

     return oWidth2 - oWidth; 
     }*/ 
+0

1. У меня уже есть Ajax вызов внутри документа. (и мы также попробовали .load вместо этого). 2. На изображениях была только ширина, и мы добавили высоту, но все равно бесполезно. 3. Я удалил первый упомянутый блок, однако я не смог найти второй блок, и в файле нет другой ссылки на файл $ .browser.safari. Вопрос все тот же. – PoloRM

+0

Я вижу. Может быть, это i.browser.safari вместо $ .browser.safari? – Roronoa

+1

В файле нет ссылки на i.browser.safari. Я думаю, что мы собираемся пойти в крайнее решение и заменить весь jcarousel на какой-то другой слайдер, так как шансы на решение этой проблемы выглядят тусклыми. Спасибо за помощь! – PoloRM