Время загрузки Jcarousel в Safari / Chrome - PullRequest
0 голосов
/ 26 января 2012

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

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

Это мой вызов ajax:

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

Я заметил две вещи:

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

Что такоестранно, что в Firefox он работает отлично ...

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

1 Ответ

1 голос
/ 30 января 2012

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

Во-вторых, также попытайтесь обернуть ваш 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;
        }*/
...