2010-08-01 1 views
1

В настоящее время я использую JCarousel для выделения «признанных сообщений» в Wordpress. Карусель отображается над складкой, как часть нашего заголовка. Он работает хорошо, как только он загружается, но поскольку мы используем его выше складки на большой странице со многими элементами, он должен дождаться загрузки всей нашей страницы, прежде чем она начнет и покажет наши избранные сообщения. Это означает, что он сидит там с «загрузкой» gif в течение 5-10 секунд, и большинство пользователей просто прокручивают его, а не ждут его загрузки.Использование JCarousel над сгибом - загрузка JCarousel до того, как страница закончила загрузку?

<script type="text/javascript"> 
    jQuery(document).ready(function(){ 
     jQuery('#mycarousel').jcarousel({ scroll : 2 }); 
    }); 
</script> 

Эта медленная загрузка надоедливая, и поэтому я хотел бы иметь нагрузку карусельной первой, поэтому он будет отображаться до загрузки остальной части страницы. Есть ли способ для меня сделать это?

Любые предложения были бы весьма полезными. Благодаря!

+0

Вы загружаете карусель в заголовке страницы или непосредственно перед тегом ''? Если вы делаете это непосредственно перед тегом '', попытались ли вы поместить его в заголовок страницы? –

+0

Да, у меня есть загрузка в заголовке. Тем не менее, он все еще ждет загрузки всей страницы, прежде чем он появится. Код, который мы используем, чтобы начать его заключается в следующем: <тип скрипта = "текст/JavaScript"> JQuery (документ) .ready (функция() { JQuery ('# mycarousel') jcarousel ({ прокрутки. : 2 }); }); – zoe739

+0

Ожидание '(document) .ready'. Я предполагаю, что Wordpress делает тяжелый подъем, который не позволяет DOM стать готовым. Вы можете попробовать загрузить его, не используя '(document) .ready', но проблема в том, что вам нужно' # mycarousel' быть стабильным первым, прежде чем вы его вызовете. –

ответ

0

Подобно тому, как катамнестическая, вот что я в конечном итоге делаю, чтобы решить мою проблему:

Поскольку виджет Facebook и виджеты Twitter на боковой панели взяли навсегда, чтобы загрузить, и нагружал до карусели, я превращал их в внешние javascripts (загрузили iframe Facebook через javascript, используя этот метод: http://www.seomofo.com/wordpress/tweetmeme-retweet-button.html) и вызвали их на window.onload, чтобы они начали загружать мертвые последними.

Теперь jcarousel загружается перед виджетами Facebook и Twitter, заставляя его появляться раньше и, кажется, занимает намного меньше времени для загрузки. Хотя я считаю, что мое общее время загрузки страницы одно и то же, я, по крайней мере, нашел способ изменить порядок вещей, чтобы элементы вверху моей страницы отображались перед медленными загрузками виджетов на боковой панели.

Спасибо за вашу помощь! Рад это решить.

0

вопрос о предварительной загрузке #mycarousel содержание? Если вы посмотрите на источник jCarousel Plugin, автор не написал ни одного блока кода для предварительной загрузки содержимого (например, Images). Так что попробуйте поджимать содержимое вашего выбора, прежде чем остальные элементы на странице по-прежнему загружаются

Я могу показать вам пример,

$(document).ready(function() { 
     var img; 
     $('#mycarousel').find('img').each(function() { 
       img = new Image(); 
       img.src = $(this).attr('src'); //preloads your Images 
     }); 

     $(img).load(function() { //perform action after the last Image is loaded 
       $('#mycarousel').jcarousel(); 
     }); 

    }); 
+0

Как это поможет, если вы все еще обертываете карусель в '(документе) .ready'? –

+0

Привет, Роберт, Сначала я подумал об использовании '$ (window) .load()', позже изменил свой разум на '$ (document) .ready()'. Потому что при использовании '(window) .load()' ему нужно дождаться, пока содержимое страницы будет загружено ** полностью **, где, как при использовании '(document) .ready()' загрузка 'Images' выполняется вместе со страницей content http://www.javascriptkit.com/dhtmltutors/domready.shtml – 2010-08-01 20:59:24

0

я хотел бы видеть, что делает вашу страницу так долго нагрузки. Отправьте свой URL-адрес или используйте Firebug, чтобы посмотреть на загрузку и ресурсы вашей страницы. Ваши изображения слишком велики? Вы загружаете слишком много скриптов или дубликатов копий jQuery? Вы пытались загрузить jQuery из CDN, например Google, с помощью Use Google Libraries « WordPress Plugins?

Вы можете вызвать дисплей: нет элементов под ползунком, пока страница не загрузится; то есть:

document.write('<style type="text/css">element{display:none}</style>'); 
jQuery(function($) { 
$('element').css('display','block'); 
}); 

Но я бы понял, почему загрузка страницы происходит медленно.

+0

На моей странице определенно есть много вещей для загрузки, поэтому это, безусловно, вызывает беспокойство. В настоящее время элементы, которые занимают дольше всего, включают в себя: несколько рекламных кодов Google, статистические отслеживания javascripts (т. Е. Quantcast, google analytics, compete.com), поле «Facebook Fan» на боковой панели и обновления Twitter, все из которых требуют загружая внешние скрипты, которые замедляют работу страницы. Я считаю, что большинство из этих необходимых, хотя, хотя я могу сосредоточиться на оптимизации, устранение их на самом деле не вариант сейчас. – zoe739

+0

Я не пробовал загружать jQuery из CDN, хотя - мы вообще не используем CDN, хотя мы определенно смотрим в него. Возможно, стоит сделать снимок. – zoe739

+0

Это корень вашей проблемы: весь этот мусор, который загружается. Сначала очистите часть этого. Вероятно, вы потеряете больше людей, чем знаете (проверьте все эти показатели, чтобы увидеть показатель отказов), потому что страница загружается медленно. – markratledge

1

Причины использования CDN предназначены для того, чтобы браузеры могли загружать JS в «parallel» и должны использоваться.

Использование iframe, вероятно, является наихудшим механизмом и должно считаться «взломом», а не «исправлением» для чего-либо (в общем).

Рассмотрите возможность использования LazyLoad, CDN и JS Staggering - то есть загрузки файлов библиотеки в HEAD и остальной части JS в области нижнего колонтитула.