我使用jquery modal在一个页面中加载多个vimeo视频。我注意到DOM中所有视频的加载(34)都会影响性能(造成加载滞后)。所以我想确保视频播放器只在shown.bs.modal
事件被触发时加载。
我是个菜鸟,不知道该怎么做。
模态:
<div class="modal fade" id="<?php echo $target; ?>" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<iframe class="test" id="vimeo" src="//player.vimeo.com/video/<?php echo $id; ?>"
frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen>
</iframe>
</div>
<div class="modal-footer">
<?php echo $name; ?>
</div>
</div>
</div>
</div>
注意:阅读已接受答案的备注
3条答案
按热度按时间46scxncf1#
我想我已经找到解决办法了。Here is a working demo。如果您检查浏览器的网络部分,您会注意到它们直到相应的模态打开才加载。
你可以将iframe的src初始化为空,这样它就不会加载任何东西。将您的URL存储在数组中,然后您可以在
shown.bs.modal
事件上使用事件处理程序。您会注意到我引用了一个
data-id
,您可以非常容易地将其添加到每个模态中。我从0开始,因为数组从0开始索引。
编辑:实际上,使用另一个数据属性,您可以避免每次加载URL的问题。Updated demo。
如果URL已加载,请在替换URL之前检查
shown.bs.modal
事件中的属性。编辑2 -使用php数组中的ID,您可以将它们转换为JS数组,如下所示:
s4n0splo2#
要在关闭模式时停止播放视频,请反向执行相同的操作:
qco9c6ql3#
关闭使用时清除模态
对于另一部分不太确定你想做什么。您可以查看jScroll,以便它只在用户开始滚动模式时加载其余的视频。
编辑:你可以从外部的html文件加载你的modal的内容,这样视频iframe只会在有人点击modal链接时加载。