Запретить подгрузку содержимого, пока не кликнули по ссылке.

Тема в разделе "Актуально, только не в тему", создана пользователем DKraev, 10.11.2010.

  1. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Здравствуйте. Тысячу лет не был на форуме - отпуск...

    Но вот вернулся и сразу озадачился одной проблемой, на которую не хватает соображалки.

    Есть сайт онлайн просмотра видео. Мнооооооого видео. Ну, к примеру, все сезоны доктора Хауса. Видео вставлено с "В Контакте". Каждая серия спрятана под спойлер.

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

    Посему возникла мысль. Как бы запретить загрузку содержимого под спойлерами до тех пор, пока на этот самый спойлер не кликнут. И не могу ничего придумать. Может у кого возникнут какие-либо мысли по этому поводу.

    Расжевывать не надо, достаточно просто пнуть под зад в нужном направлении, а там я сам выгребу. Если у кого есть соображения - поделитесь, пожалуйста.
    ---
    Спасибо.
     
  2.  
  3. sergiks
    Offline

    sergiks Недавно здесь => Cпециалист <=

    Регистрация:
    10.10.2010
    Сообщения:
    362
    Симпатии:
    36
    Пол:
    Мужской
    Флеш плеер - вконтактовский? Или оттуда только видеофайл берётся?
    В общем, это внутри флеш-плеера поведение: сразу играть или ждать.
     
  4. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Нет, тут ситуация немного другая...

    Плеер стоит контактовский. А подключается все это дело с контакта через iframe. Соответственно мне нужно было сделать запрет загрузки какого либо содержимого до тех пор, пока не открыт спойлер.

    Я пошел по наиболее простому пути, как мне лично кажется. По крайней мере ничего другого я все-равно придумать не смог :)

    Навряд ли это кому-нибудь пригодится, но напишу как сделал (чтобы и самому не забыть, если вдруг понадобится повторить).

    Как я уже говорил, я использую плагин спойлеров (pb_spoiler). А он у меня работает с jQuery. НЕ мудрствуя лукаво, был поправлен плагин. Не буду подробно описывать принцип работы плагина (не в этом суть), приведу лишь строчку кода. Именно так выводится структура спойлера на сайте, после обработки плагином.

    Код (PHP):
    1. $html .= '<div class="technology"><span>'.$matches[1].'</span></div><div class="thelanguage"><div class="thetextinter">'.$spoilertext.'</div></div>';


    .$matches[1]. - это у нас заголовок спойлера (ссылка, на которую жмем чтобы спойлер раскрылся), а .$spoilertext. - собственно сам текст спойлера. Так же в код плагина присутствует дополнительная переменная - $numspoilers, которая просто выводит порядковый номер спойлера.

    Я прям в код плагина дописал скрипт замены текста по клику, ну и поправил строку вывода:

    Код (PHP):
    1. $html .= '
    2.     <script type="text/javascript">
    3.     <!--
    4.         jQuery(function() {
    5.             jQuery(\'span.open'.$numspoilers.'\').click(function() {
    6.                 jQuery(\'div.noneframe'.$numspoilers.'\').replaceWith(\'<div class="thetextinter">'.$spoilertext.'</div>\');
    7.             });
    8.         });
    9.     //-->
    10.     </script>
    11.     <div class="technology"><span class="open'.$numspoilers.'">'.$matches[1].'</span></div><div class="thelanguage"><div class="noneframe'.$numspoilers.'"></div></div>
    12. ';


    Таким образом получается, что когда страница загружается, под спойлерами ничего нет, пусто.

    А когда кликаем по спойлеру, то я подгружаю содержимое именно активного спойлера, заменяя пустой код <div class="noneframe'.$numspoilers.'"></div> на <div class="thetextinter">'.$spoilertext.'</div>

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

Поделиться этой страницей

Загрузка...