2010-10-30 2 views
1

У меня есть этот плагин jQuery под названием Easy Slider, который я реализую на this site, который отображает контент в формате анимированного слайда.Почему мой скрипт прерывается с перерывами?

Если вы заходите на сайт, вы увидите базовую реализацию на home page и немного более тонкую версию на Rods page. На странице Rods я просто использую 11 экземпляров реального ползунка.

Вещь была первоначально построена только для одного экземпляра, но функциональность нескольких слайдов была добавлена ​​в более поздней версии. Так что сегодня все хорошо работало на главной странице. Сегодня я реализовал 11 экземпляров на странице Rods (используя его для отображения изображений стиля галереи продукта клиента). Чтобы реализовать несколько экземпляров, я должен был предоставить каждому контейнеру слайда имя с уникальным идентификатором, а затем передать параметры, чтобы изменить также разметку «предыдущей» и «следующей» кнопок jQuery.

Разметка что-то вроде этого:

<div id="slider-1"> 
    <ul> 
     <li><img src="/img/rod.jpg" /></li> 
     <li><img src="/img/rod.jpg" /></li> 
     <li><img src="/img/rod.jpg" /></li> 
    <ul> 
</div> 

И тогда скрипт генерирует два <span> элементов после каждого слайда DIV, которые выглядят следующим образом:

<span id="nextBtn"><a href="#">next</a></span> 
<span id="prevBtn"><a href="#">previous</a></span>  

Это было действительно привередливы сказать наименее. Я почти вытягиваю свои волосы из-за этого, потому что происходящее просто не имеет для меня никакого смысла.

Вот некоторые из сумасшествия я испытывал ...

  • Реализовано несколько слайдов и после некоторого стиля тонкой настройки я получил все, что смотреть и правильно работает в Firefox; Пошел, чтобы проверить его в Chrome, где у меня была более старая версия страницы и после обновления ни один из моих скриптов не выполнялся. Вернулся в FF и после обновления скрипты в этом браузере не выполнялись, хотя я не обновлял код вообще между обновлениями. Кроме того, я проверил мою консоль ошибок и не было перечисленных ошибок.
  • Вернулся к моему коду и дважды проверял, посмотрев на мою локальную копию и копию в реальном времени, чтобы сравнить, никаких различий. Так что обновился несколько раз и очистил кеш и все еще ничего. Затем отошел от моего компьютера, чтобы ударить головой, вернулся, обновился, и скрипты jQ снова запустились! (BTW, не только затронутые сценарии EasySlide, но и сценарий, который у меня сразу после того, как нижний колонтитул затухает в/из опроса навигатора).
  • Обновлено в Chrome снова, и на этот раз я получаю странное поведение, когда содержащий div имеет встроенную высоту, и я не уверен, откуда она возникает. Как ни странно, он выглядит иначе и между браузерами. В Chrome это выглядит так: height:21px; для каждого из предметов. В Firefox это выглядит как height:271px для первого слайда в списке и height:0px для каждого другого слайда в списке. Нет подсказки, откуда это происходит или почему. Хотя, теперь, когда я пишу это, мне интересно, если это проблема с моей разметкой, где мне пришлось использовать <div> внутри <ul>?
  • Наконец, совсем недавно я снова обновился в каждом браузере (и также проверял с моего Macbook), и снова скрипты не выполняются.

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

  1. Что вы видите - только одно статическое изображение для каждой проводки Rod или набор скользящих изображений с левыми/правыми деревянными треугольными кнопками рядом?
  2. Почему, на первый взгляд, скрипты прерывались бы таким образом?
  3. Отображаются ли все окна изображений в полноэкранном режиме в вашем браузере? Если нет, видите ли вы встроенный стиль и откуда.

Извините за обширную длину здесь, и если многое из этого исходит из простого отсутствия опыта работы с javascript. Я считаю себя продвинутым с HTML & CSS, но очень новичок в JS. Таким образом, любой важный вклад приветствуется.

+0

Я меняю свои содержащиеся divs на промежутки, чтобы посмотреть, не влияет ли это на что-то ... –

+0

Нет, но после того, как я скопировал и вставил разметку назад, как это было с divs, скрипты снова запущены ...! –

+0

ОК, заметил, что в моем нижнем колонтитуле я получал ошибку PHP от моего канала Twitter, о котором я, честно говоря, не знаю, в чем проблема, - но, похоже, ошибка приводила к сбою остальной части файла, включая скрипты, которые Я написал после. –

ответ

1

Я вижу отдельные изображения на обеих страницах и некоторые ошибки PHP, пытающиеся извлечь контент из Twitter внизу, по-видимому, заканчивая страницу преждевременно. Возможно, у вас есть код вызова для скрипта где-то внизу страницы, который не запускается, потому что сценарий запускается?

Каждый раз, когда вы подключаетесь к внешнему ресурсу, вы должны быть готовы к сбою и использовать проверку и/или исключение на каждом шаге, чтобы убедиться, что если он не работает, он не бомбит все ваше скрипт.

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

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

+0

Да, это кажется правильным. Я действительно копаю в этом, и я думаю, что вы на месте, потому что, когда я удаляю этот бит PHP, все хорошо снова. (вы можете увидеть PHP на этом обновленном, более конкретном вопросе, который я только что опубликовал: http://stackoverflow.com/q/4060876/185973). –

+0

Возможно, мне просто нужно выбрать гораздо более общее решение, такое как виджет Twitter, поскольку все эти сценарии и кеширование идут по моей передней стороне. :-) Спасибо за помощь! –

+1

Что такое блаженство, чтобы прочитать такой большой материал, понять и исправить проблему. – kobe

Смежные вопросы