2015-12-01 3 views
1

Я не могу получить fluidsvids.js, чтобы работать на моем сайте, размещенном на сайте github (работает на Poole/Jekyll), когда вставляется код liquidvids.js до видео вставляется.Почему javascript (fluidvids.js) работает только при загрузке * после * встраивания видео?

Однако при вводе кода после видеоролики вставляются, видео изменяются до макета благодаря жидкостиvids.js. Почему?


Я извлек весь fluidvids zip файл в /public/js/fluidvids.

В моей _includes папки, я создал HTML-файл, fluidvids.html:

<!-- fluidvids.js --> 
<script src="{{ site.baseurl }}public/js/fluidvids/dist/fluidvids.js"></script> 
<script> 
fluidvids.init({ 
    selector: ['iframe'], 
    players: ['www.youtube.com', 'player.vimeo.com'] 
}); 
</script> 

И в моем default.html макете, я вставил {% include fluidvids.html %}:

<!DOCTYPE html> 
<html lang="en-us"> 

    {% include head.html %} 
    {% include google_analytics.html %} 

    <body> 
    {% include fluidvids.html %} 
    {% include sidebar.html %} 

    <div class="content container"> 
     {{ content }} 
    </div> 

    </body> 
</html> 

Наконец, я внедренный два видео для тестирования в Почта; 2007-02-10-Island-of-Lost-Souls.md:

<iframe src="https://player.vimeo.com/video/9685584" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe> 
<iframe width="420" height="315" src="https://www.youtube.com/embed/ZdyzjKDWpYU" frameborder="0" allowfullscreen></iframe> 

Однако видео не размер с макетом, пока не размещены включаемые после пост содержания блога, как это:

<!DOCTYPE html> 
<html lang="en-us"> 

    {% include head.html %} 
    {% include google_analytics.html %} 

    <body> 
    {% include sidebar.html %} 

    <div class="content container"> 
     {{ content }} 
     {% include fluidvids.html %} 
    </div> 

    </body> 
</html> 

Почему это?

Here's тонированное сообщение, когда fluidvid.js загружается после блога сообщению содержимого.

ответ

1

Потому что вы не дожидаетесь готовности документа (onload) до вызова liquidvids.init. Если этот блок сценария находится перед вашими видеоэлементами, вам нужно дождаться события onload для документа, иначе инициализация (без пауз?) Завершится неудачно, поскольку селекторы не возвратят ни одного элемента, так как браузер не имел возможности обработать их разметку все же. Так что либо привязывайтесь к событию onload, а затем запускайте инициализацию флюидов, или включайте блок сценария после соответствующих элементов.

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