【发布时间】:2015-11-07 23:54:34
【问题描述】:
我正在构建一个脚本,当 Bootstrap 模式打开时自动播放视频。我在模态打开表单上使用 ng-click,它运行带有 angularjs 控制器的 jquery 脚本。
$scope.startVideo = function (id) {
$(window).on('shown.bs.modal', function() {
console.log('Id nu is: '+id);
var v = document.getElementById("player"+id);
v.play();
console.log('Now playing: player'+id);
});
}
起初它工作正常。但是当我关闭第一个模态(并停止视频)并在另一个模态上再次触发脚本时,第一个视频开始,第二个视频开始。所以现在我有 2 个视频正在播放。
控制台正在回馈::
正在播放:player1
正在播放:player1
正在播放:player2
模态中可能有趣的部分:
<div class="modal-body">
{{video.subheader}}<br>
<video id="player{{video.id}}" width="100%" height="100%" controls>
<source src="{{video.videourl+video.ext}}" type="video/mp4></source>
</video>
</div>
<!-- Popup modals below -->
<div id="videomodal{{video.id}}" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">{{video.header}}</h4>
</div>
<div class="modal-body">
{{video.subheader}}<br>
<video id="player{{video.id}}" width="100%" height="100%" controls>
<source src="{{video.videourl+video.ext}}" type="video/mp4"></source>
</video>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
为什么脚本运行两次?我需要它在模态打开时运行一次。当我停止视频,关闭模态并打开另一个模态时,另一个模态应该开始。两者都不是。
【问题讨论】:
-
您正在创建一个新变量,
v每次打开模式时。当你关闭它时,你所做的变量不会消失。你需要处理这个 -
@Ronnie 当我在脚本末尾删除 v 时,例如;删除 v;它不会工作。
-
只做
document.getElementById("player" + id).play();如果这不能解决问题,请为我们创建一个复制问题的小提琴。 -
@Ronnie 生活可以如此简单。那解决了它。也许将其归档为答案,所以我可以将其标记为答案!
标签: javascript jquery angularjs html twitter-bootstrap