【问题标题】:youtube repeat onelineryoutube 重复 oneliner
【发布时间】:2015-08-10 18:37:10
【问题描述】:

我正在尝试制作 oneliner 来重复视频。

我开始寻找那个重播按钮来触发另一轮:

$("[title='Replay']")[0].click();

在 vid 运行时在后台循环的自调用函数。

rpt=function(){setTimeout(function(){alert("blarg");rpt()},5000)}

将这两个东西放在一起并添加一点绒毛: $ = jQuery 初始化闪亮的 $() 语法,最后 rpt(); 让事情滚动:

$=jQuery,rpt=function(){setTimeout(function(){$("[title='Replay']")[0].click(),rpt()},100)};rpt();

唉,部分有效,但不是全部

我注意到如果我在视频结束前输入最后一行,控制台会打印一条错误消息;由于尚未找到该按钮,因此在 undefined 上调用 .click() 不起作用。

该函数是否应该仍然在后台循环并在稍后的调用期间触发,只要有回放按钮供 jQuery 抓取吗?

我正在使用 chrome 44.0.2403.130 和 jQuery:1.10.1

【问题讨论】:

    标签: javascript jquery youtube


    【解决方案1】:

    添加验证以确保有可用的重播元素。

    使用setInterval() 而不是setTimeout()

    默认情况下(除非您使用其他有冲突的库),jQuery 在其初始化时被分配给 $ 变量。

    setInterval(function(){if($("[title='Replay']").length)$("[title='Replay']").trigger('click');},100);

    【讨论】:

    • $ 的分配似乎只在使用浏览器扩展时才有必要,这就是我在这里使用它的原因,但我不打算调查它。无论如何,感谢您的回答,因为它现在可以工作了,我想我现在最好去阅读 setInterval 的文档^^
    【解决方案2】:

    一行重复+标题中附加的重复次数:

    var title=$('#eow-title').innerHTML; var replaysN = 1; setInterval(function(){if($('.ytp-play-button').title == 'Replay') {$('.ytp-play-button').click();$('#eow-title').innerHTML = title+' (x'+replaysN+')';replaysN++;} }, 1000);

    ..在发表这篇文章几周后,youtube 中有一个新功能:D 右键单击视频后->循环 所以每次定制都是无用的:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 2021-07-19
      • 2016-06-04
      • 2010-12-16
      • 2010-12-30
      • 2018-07-10
      相关资源
      最近更新 更多