Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何让settimeout函数在视频结束时起作用?

如何让settimeout函数在视频结束时起作用?
EN

Stack Overflow用户
提问于 2020-04-30 03:24:51
回答 1查看 44关注 0票数 1

当视频结束时,settimeout函数是否起作用?我正在尝试找到一种在视频结束时延迟点击按钮的方法。我让settimeout在视频播放结束后运行,但它不执行。我试着在.click之前做delay(),但效果不佳。

有问题的JS代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('.content-bottom div.tv-main div.webcam-left div.slider-wrap div.slide-wrap div.slider-slide-wrap.video-post.shown div.media-contain video#video-to-play').on('ended',function(){
    $(".shown .media-contain").transition({ opacity: 0 });
    setTimeout(function(){
       $('#next-item').click();
    }, 150);
});

完整的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var n = $(".slider-slide-wrap").length,
    width = 1024,
    newwidth = width * n;
var n = $(".slider-slide-wrap2").length,
    width = 1024,
    newwidth = width * n;
$('.slide-wrap').css({
    'width': newwidth
});
$('.slide-wrap2').css({
    'width': newwidth
});
$(".slider-slide-wrap").each(function (i) {
    var thiswid = 1024;
    $(this).css({
       'left': thiswid * i
    });
});
$(".slider-slide-wrap2").each(function (i) {
    var thiswid = 1024;
    $(this).css({
       'left': thiswid * i
    });
});
$('.multi li:gt(0)').hide();
$('.slider-wrap').scroll(function () {
  var scrollLeft = $(this).scrollLeft();
  $(".slider-slide-wrap").each(function (i) {
      var posLeft = $(this).position().left
      var w = $(this).width();
     
      if (scrollLeft >= posLeft && scrollLeft < posLeft + w) {
        $(this).addClass('shown').siblings().removeClass('shown');

        if ($('.shown').is(".video-post")) {
          $('.shown #video-to-play').trigger('play');
          $(".shown .media-contain").css({"opacity":"0","background":"black","display":"block"}).show().delay(5).animate({opacity:1});
          $('.content-bottom div.tv-main div.webcam-left div.slider-wrap div.slide-wrap div.slider-slide-wrap.video-post.shown div.media-contain video#video-to-play').on('ended',function(){
            $(".shown .media-contain").transition({ opacity: 0 });
            setTimeout(function(){
              $('#next-item').click();
            }, 150);
          });
        }
      }
  });
});
$('.slider-wrap2').scroll(function () {
  var scrollLeft = $(this).scrollLeft();
  $(".slider-slide-wrap2").each(function (i) {
      var posLeft = $(this).position().left
      var w = $(this).width();
     
      if (scrollLeft >= posLeft && scrollLeft < posLeft + w) {
        $(this).addClass('shown').siblings().removeClass('shown');
      }
  });
});
// Video intro
$('#start').click(function() {
  $('.video-open-1280 video').trigger('play');
  $('#start').css('display','none');
  $('#start2').css('display','block');
});
$('#start2').click(function() {
  $('.video-open-1280 audio').trigger('play');
  $('#start2').css('display','none');
  $('#start3').css('display','block');
});
$('#start3').click(function() {
  $('.video-open-1280').transition({ x: '-1300px', y: '-1300px',rotate: '45deg' }, 2100);
  $('#start3').css('display','none');
  $('#start4').css('display','block');
});
$('#start4').click(function() {
  $('.video-open-1280').transition({ x: '-1300px', y: '-1300px',rotate: '45deg' }, 2100);
  $('#start4').css('display','none');
  $('.nav-menu').css('display','block');
  setTimeout(function(){
    $('audio').animate({volume: 0.05}, 10000);
  }, 1500);
  setTimeout(function(){
    $('audio').animate({volume: 0.0}, 10000);
  }, 15000);
});
// nav menu
$("#next-item").on("click", function(){
  event.preventDefault();
  var $next = $('.slide-wrap .shown').next();
  var $next2 = $('.slide-wrap2 .shown').next();
  if ($next.length) {
      $('.slider-wrap').animate({
          scrollLeft: $next.position().left
      }, 0);
  }
  if ($next2.length) {
      $('.slider-wrap2').animate({
          scrollLeft: $next2.position().left
      }, 200);
  }
  var curr = $('.rundown-items .current').parent(); //find .current's parent
  var $children = $('.rundown-items').children();
  var firstcal = $children.length;
  var actual = firstcal - 9;
  $children.each(function (i) {
    if (i < actual) {
      $(this).addClass('scrollup')
    }
  });
  if (curr.next().length > 0) { 
    $('.rundown-items').animate({scrollTop: '+=35px'}, 400);
    curr.children('.current').contents().unwrap(); // remove .current
    curr.next().wrapInner('<div class="current"></div>'); // add it to the next element
  };
});
$('#prev-item').click(function () {
    event.preventDefault();
    var $prev = $('.slide-wrap .shown').prev();
    var $prev2 = $('.slide-wrap2 .shown').prev();
    var curr = $('.rundown-items .current').parent(); //find .current's parent
    if ($prev.length) {
        $('.slider-wrap').animate({
          scrollLeft: $prev.position().left
        }, 0);
    };
    if ($prev2.length) {
        $('.slider-wrap2').animate({
          scrollLeft: $prev2.position().left
        }, 200);
    };
    if (!curr.hasClass("first")) {
      if (curr.hasClass("scrollup")){
        $('.rundown-items').animate({scrollTop: '-=35px'}, 400);
      };
      curr.children('.current').contents().unwrap(); // remove .current
      curr.prev().wrapInner('<div class="current"></div>'); // add it to the next element
    };
});
$('#reload').click(function() {
    location.reload(true);
});
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
body {padding:0;margin:0}
.container{height:770px}
.content-bottom{height:720px}
.nav-contain{padding-top: 13px;padding-left: 20px;}
.slider-wrap{position:relative;width:1024px;height:576px;overflow-y:hidden;overflow-x:hidden}
.slider-wrap2{position:relative;width:1024px;height:60px;overflow-y:hidden;overflow-x:hidden;border-top:5px solid #2e86ab;background:#ebedea;padding-top:5px;text-align:center}
.slide-wrap{position:relative;height:576px;left:0;right:0}
.slide-wrap2{position:relative;height:60px;top:0;left:0}
.slider-slide-wrap,.slider-slide-wrap2{position:absolute;width:1024px;height:100%}
.video-open-1280{position:absolute;top:0;left:0;z-index:9999}
.top-nav{background:grey;height:50px;position:relative;z-index:999999999}
.next-item{background:#000;padding:4px 8px;display:inline-block;color:#fff}
.cover-art{height:195px;background:#404e4d}
.tv-main{width:1280px;height:720px;overflow:hidden;background:#ebedea;position:absolute;top:50px;left:0}
.webcam-left{background:green;width:1024px;height:576px}
.nav-right{width:256px;margin-left:1024px;margin-top:-576px;height:576px;background:#ebedea;text-transform:uppercase}
.nav-main .irl-today{padding:7px 10px;border-bottom:2px solid #4d7ea8}
.nav-main .current{background:#4d7ea8;padding:5px 0 5px 8px;color:#fff;margin:-5px 2px -5px -8px}
.rundown-items{overflow:auto;height:350px;width:280.5px}
.rundown-panel{background:#343330;padding:8px 10px 6px;color:#fff}
.logo-right-bottom{background:#2c2c2c;width:256px;height:100%;float:right;border-top:5px solid #2e86ab}
.video-open-1280{border-bottom:5px solid #ccc;border-right:5px solid #ccc;height:720px}
.cover-art .cover-img{position:absolute;right:-14px;top:-25px}
.cover-art .cover-img img{width:300px;height:auto}
.video-post {background:black;margin:0 auto;text-align:center}
.video-post video {height:576px;width:auto}
.override .current{background:none}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.transit/0.9.12/jquery.transit.min.js"></script>
<div class="container">
    <div class="top-nav">
      <div class="nav-contain">
        <button id="next-item" class="button">Next</button>
      </div>
    </div>
    <div class="content-bottom">
      <div class="tv-main">
        <div class="webcam-left">
          <div class="slider-wrap">
            <div class="slide-wrap">
                <div class="slider-slide-wrap shown"></div>
                                                                                                      <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                                                                                              <div id="video-ID-1" class="slider-slide-wrap video-post">
                        <div class="media-contain">
                          <video id="video-to-play" onloadstart="this.volume=0.5" src="https://ia601401.us.archive.org/3/items/5sec-sound-test/5sec%20sound%20test.mov"></video>
                        </div>
                      </div>
                                                                      <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                                                                                              <div id="video-ID-2" class="slider-slide-wrap video-post">
                        <div class="media-contain">
                          <video id="video-to-play" onloadstart="this.volume=0.5" src="https://ia601401.us.archive.org/3/items/5sec-sound-test/5sec%20sound%20test.mov"></video>
                        </div>
                      </div>
                                                                      <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                                <div class="slider-slide-wrap"></div>
                            </div>
          </div>
        </div>
        <div class="nav-right nav-main">
            <div class="cover-art"><div class="cover-img"></div></div>
            <div class="rundown-panel">rundown</div>
            <div class="rundown-items">
              <div class="irl-today first"><div class="current">Welcome</div></div>
                                                                                                                                                            <div class="irl-today">Item 1</div>
                            <div class="irl-today">Item 2</div>
                                                                                                                                                                                              <div id="video-ID-1" class="irl-today override"><div class="has-video">:Video 1:</div></div>
                                                                                                <div class="irl-today">Diary entry 1</div>
                            <div class="irl-today">Diary entry 2</div>
                                                                                                                                                                                              <div id="video-ID-2" class="irl-today override"><div class="has-video">:Video 2:</div></div>
                                                                                                <div class="irl-today">Item 3</div>
                            <div class="irl-today">Item 4</div>
                            <div class="irl-today">Item 5</div>
                            <div class="irl-today">Item 6</div>
                            <div class="irl-today">Item 7</div>
                            <div class="irl-today">Item 8</div>
                            <div class="irl-today">Item 9</div>
                            <div class="irl-today end">The end</div>
            </div>
        </div>
        <div class="logo-right-bottom"></div>
        <div class="slider-wrap2">
          <div class="slide-wrap2">
              <div class="slider-slide-wrap2 shown"><span class="text">IRL TODAY: Saturday, December 7, 2019</span></div>
                                                                                                                              <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 1</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 2</p>
</span>
                  </div>
                                                                                                                  <div class="slider-slide-wrap2 play-video">
                    </div>
                                                      <div class="slider-slide-wrap2">
                      <span class="text"><p>This is a diary entry 1</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is a diary entry 2</p>
</span>
                  </div>
                                                                                                                  <div class="slider-slide-wrap2 play-video">
                    </div>
                                                      <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 3</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 4</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 5</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 6</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 7</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 8</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2">
                      <span class="text"><p>This is item 9</p>
</span>
                  </div>
                                    <div class="slider-slide-wrap2"><span class="text">The end</span></div>
          </div>
        </div>
      </div>
    </div>
</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 04:27:15

这个表达式的计算结果永远不会是true,所以我无法让它像您编写的那样工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (scrollLeft >= posLeft && scrollLeft < posLeft + w) {

当我禁用该条件时,我运行以下代码行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$('.shown #video-to-play').trigger('play');

但是,它在控制台中触发了一个错误:Autoplay is only allowed when approved by the user, the site is activated by the user, or media is muted.

启用自动播放后,我发现下面这一行导致了一个错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(".shown .media-contain").transition({ opacity: 0 });

它应该是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(".shown .media-contain").animate({ opacity: 0 });

和:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#next-item").on("click", function(){

应为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("#next-item").on("click", function(event){

在此之后,事件似乎可以正常触发。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61515399

复制
相关文章
[译文]Domain Driven Design Reference(二)—— 让模型起作用
  很多项目做建模工作最终没有获得太多的实际好处。DDD模式从项目中提炼成功的实践使得建模带来了巨大的好处。总的来说,他们提出了一个与先从细节再到高层次的视角【1,在DDD之前我们大部分都习惯于先进行数据表的设计】完全不同的建模和软件开发的方式。严格的建模惯例必须平衡好与非技术人员【2,一般这里指领域专家】合作进行的模型探索。战术和战略必须结合才能成功,DDD同时涉及战术和战略的设计。
Zachary_ZF
2018/09/10
3290
JavaScript如何用setTimeout模拟setInterval
思路就是递归调用 function myInterval(fun,time){ function inside(){ fun(); setTimeout(inside,time); } setTimeout(inside,time); } myInterval(fn,1000); function fn(){ console.log('嘿嘿'); }
henu_Newxc03
2022/05/05
9340
关于setTimeout和setInterval的函数参数问题
今天在写验证码倒计时小demo时,用了如下代码: window.setTimeout(count(num),1000); 这样直接使用将使count函数立即执行,并将返回值传递给setTimeout函数作为参数,其结果并不是真正需要的,所以会出现问题。 方法一 使用字符串形式可以达到想要的结果: window.setTimeout("count(num)",1000); 这是我以前常用的方法。 但这种写法是将函数包在引号里,有点像字符串,不够直观。 而且有些场合必须使用函数名,于是上网查阅了以下方法: 方法
mcq
2018/06/20
2K0
JavaScript定时调用函数(SetInterval与setTimeout)
setTimeout和setInterval的语法相同。它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码。
aehyok
2018/09/11
1.5K0
如何让视频会议在小程序上开起来
|导语  使用企业微信跨组织间会议门槛较高,要求外部客户或合作伙伴先建立在企业微信的线上组织才可入会,通过引入小程序入会能力,降低跨组织会议的门槛; 为解决微信用户发起会议,邀请企业微信、微信好友入会的场景,企业微信会议小程序也提供在微信侧接入和发起会议的能力,实现微信用户发起会议邀请企业成员加入会议的能力; 产品功能说明 企业微信的会议是接入了腾讯云提供的XCast SDK,腾讯会议后台提供了Rest APi接口用于创建会议、加入会议、获取会议信息等; 企业微信的会议是接入了腾讯云提供的XCast S
腾讯大讲堂
2020/09/30
11.8K1
echart 在点击事件中使用setTimeout 方法
点击一个按钮后左边div隐藏,右侧图表变大,需要重新绘制图表,resize方法如下:
tianyawhl
2019/04/04
1.1K0
mysql在开始与结束时间过滤出有效的价格且结束时间可以为空
在商品配置中设置有售卖时间,同一个商品可以设置多组不同的售卖时间,其中开始时间必填,结束时间可以不填,但是同一时刻只会有一个正在生效的时间区间。
翎野君
2023/05/12
5110
Flink startupMode是如何起作用的
版权声明:本文为博主原创,欢迎转载,转载请标明出处 Blog Address:http://blog.csdn.net/jsjsjs1789 https://blog.csdn.net/jsjsjs1789/article/details/89067716
shengjk1
2019/04/18
1.4K0
JS中setTimeout是如何实现的
我们知道 Javascript引擎是单线程的,而setTimeout方法的作用是延后执行目标代码,同时还可以继续往下执行 setTimeout是如何实现的? 这涉及到了浏览器内核的事件循环模型,在Javascript引擎之外,有一个任务队列,当执行到setTimeout时,延时方法会交给内核其他模块处理(与执行引擎主线程独立),当延时方法到达触发条件,这一延时方法被添加至任务队列里,执行引擎在主线程方法执行完毕后,会从任务队列中顺序获取任务来执行,这一过程是一个不断循环的过程,称为事件循环模型 下面通过一段
dys
2018/04/02
3.4K0
JS中setTimeout是如何实现的
如何让别人看懂你的函数
这里的冒号和箭头是什么东西了,当时是很奇怪这里的写法,后面在网上查阅资料时,说是type hints,也就是类型提示。
罗罗攀
2021/03/23
6560
如何让别人看懂你的函数
Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?
命名实体识别中,BERT负责学习输入句子中每个字和符号到对应的实体标签的规律,而CRF负责学习相邻实体标签之间的转移规则。详情可以参考这篇文章CRF在命名实体识别中是如何起作用的?。该文章中我们对CRF做了简单易懂的介绍,其中提到CRF的损失函数计算要用到最优路径,因为CRF的损失函数是求最优路径的概率占所有路径概率和的比例,而我们的目标是最大化这个比例。那么这里就涉及到计算最优路径的问题。这里的路径在命名实体识别的例子中,就是最终输出的与句子中的字或符号一 一对应的标签序列。不同标签序列的顺序组成了不同的路径。而CRF就是要找出最正确的那条标签序列路径,也就是说这条标签路径的概率将是所有路径中最大的,那么我们可以穷举出所有可能的标签路径,计算出每条路径的概率和,然后比较出最大的那条,但是这样做的代价太大了,所以crf选择了一种称为维特比的算法来求解此类问题。
程序员一一涤生
2019/11/26
1.4K0
Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?
为什么 strace 在 Docker 中不起作用?
在编辑“容器如何工作”爱好者杂志的能力页面时,我想试着解释一下为什么 strace 在 Docker 容器中无法工作。
用户8639654
2021/09/18
6.4K0
[常见问题]在Linux下执行Redis命令不起作用.
redis 127.0.0.1:6379> 这个后面无论输入什么命令都没有返回 ok 或者其他的信息,一直保持截图的状态: 解决方法: 在SecureCRT中设置Options-->SessionO
一枝花算不算浪漫
2018/05/18
1.9K0
如何在 pyqt 中解决国际化 tr() 函数不起作用的问题
有些时候我们在父类中使用了 self.tr('XXX'),使用 Qt Linguist 完成翻译并导出 qm 文件后,发现子类中仍然是英文原文。比如下面这段代码:
落寞的鱼丶
2022/02/21
2.2K0
如何让短视频做到”秒播“?(下)
前面我们讲到,如果要让短视频做到”秒播“的话,可以从域名解析、socket buffer、Probe buffer入手,对短视频小视频源码进行优化,那么我们今天来把剩余的几个方面介绍完。
云豹通讯员
2020/03/18
1.9K0
如何让短视频做到”秒播“?(下)
如何让短视频做到”秒播“?(上)
和直播一样,短视频想要做到“秒播”,不仅仅是要在短视频小程序源码上做优化,还要在服务器上做优化。移动设备的视频播放器是通过某个视频url域名,通过DNS服务请求到IP地址,通过这个IP地址与视频服务器建立TCP链接,在连接之上建立http协议,最终请求到数据,通过播放器进行解析,用户看到画面听到声音,一个短视频的起播流程就结束了。
云豹通讯员
2020/03/16
2K0
如何让短视频做到”秒播“?(上)
Viterbi(维特比)算法在CRF(条件随机场)中是如何起作用的?
首先,让我们简单回顾一下BERT和CRF在命名实体识别中各自的作用: 命名实体识别中,BERT负责学习输入句子中每个字和符号到对应的实体标签的规律,而CRF负责学习相邻实体标签之间的转移规则。详情可以参考这篇文章CRF在命名实体识别中是如何起作用的?。该文章中我们对CRF做了简单易懂的介绍,其中提到CRF的损失函数计算要用到最优路径,因为CRF的损失函数是求最优路径的概率占所有路径概率和的比例,而我们的目标是最大化这个比例。那么这里就涉及到计算最优路径的问题。这里的路径在命名实体识别的例子中,就是最终输出的与句子中的字或符号一 一对应的标签序列。不同标签序列的顺序组成了不同的路径。而CRF就是要找出最正确的那条标签序列路径,也就是说这条标签路径的概率将是所有路径中最大的,那么我们可以穷举出所有可能的标签路径,计算出每条路径的概率和,然后比较出最大的那条,但是这样做的代价太大了,所以crf选择了一种称为维特比的算法来求解此类问题。
程序员一一涤生
2019/11/29
1.3K0
用户投稿 | 视频云如何通过技术助力,让视频创作如虎添翼
互联网的发展,离不开内容的创作。早期的互联网受限于设备和网络环境,只能通过文本的方式承载内容,可随着互联网通信技术的发展,人们生产和消费内容的形式,开始从文字过渡到音视频。随着 5G 的快速发展,音视频行业更是发生了翻天覆地的变化,越来越多的人加入到视频创作的队伍中,也有越来越多的人更倾向于用视频来接收信息。作为一名音视频技术开发者,我想以产品的视角,从实际业务场景出发,结合自己的亲身经历。来分析当前音视频行业的音视频技术发展趋势,视频云相关产品的体验,以及即将迎来的挑战。
腾讯云音视频
2021/01/27
1.3K0
在bootstrap中col-md-offset-* 偏移不起作用
在bootstrap中,使用col-md-offset-1、col-md-offset-2、col-md-offset-3、col-md-offset-4等来设置偏移量很常见,但最近就遇到一个问题了,在最新版的bootstrap4.5中,这个值不起作用了。
kirin
2020/10/27
12.6K1
使用Jest测试包含setTimeout调用的函数踩坑记录
前两天给一个包含setTimeout调用的函数写单元测试,在使用fake timer的时候遇到了问题,记录一下。
雪之下Perqin
2021/08/26
6.9K0

相似问题

(仍然需要帮助)如何让playvideo函数在视频结束时返回?

10

如何让youtube视频在视频结束时全屏退出

21

如何让setTimeout()函数按顺序工作?

35

setTimeout函数不起作用

12

setTimeout()函数不起作用

69
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文