我几乎可以使用JavaScript API控制YouTube播放器。
player = document.getElementById('movie_player');
但我找不到任何功能可以让我在5秒钟后跳过广告视频(如果有的话(。
我怎样才能做到这一点?
我找不到一个干净的解决方案。但下面是我所做的,
选项1:
在书签中添加以下代码
javascript:(function(){setInterval(function() { var $cross = document.getElementsByClassName("ytp-ad-overlay-close-container")[0]; var $skip = document.getElementsByClassName("ytp-ad-skip-button")[0]; if ($cross != undefined) $cross.click(); if ($skip != undefined) $skip.click() }, 2000)})();
在书签中添加JS代码很容易,
- 只需点击书签图标
- 单击"更多"按钮
在URL中添加上面的代码并给它一个名称,它现在将出现在书签选项卡中。
每当你打开任何youtube视频,只需点击你创建的书签即可跳过
选项2(更好的选项(:
- 按要求安装镀铬加长件
- 单击
New Rule
- 选择
Insert Scripts
- 请求中的Give youtube url包含
- 单击
Add Custom Script
并选择Custom Code
- 插入以下代码并单击保存
setInterval(function() {
var $cross = document.getElementsByClassName("ytp-ad-overlay-close-container")[0];
var $skip = document.getElementsByClassName("ytp-ad-skip-button")[0];
if ($cross != undefined) $cross.click();
if ($skip != undefined) $skip.click()
}, 2000);
每当youtube打开时,Requestly都会运行此代码,它会跳过广告和广告视频。
注意:这是一个肮脏的解决方案,我使用它,它对我有效。可能有更好的解决方案
您只需要检测跳过按钮的id(如果可用(。然后调用它的事件点击。它看起来像这样:
setTimeout(function(){
var _skip = $('#skip_button_id');
if(_skip!=null)
_skip.click();
}, 1000);
这不是真正的代码。只需让您知道如何操作即可。
const skip_add = (clazz) =>
{
const buttons = document.getElementsByClassName(clazz);
for (const button of buttons)
{
button.click();
console.log("No More Ad");
}
}
setInterval(() =>
{
skip_add("ytp-ad-skip-button-text");
skip_add("ytp-ad-overlay-close-button");
}, 1000);
这不是一个非常优雅的代码,但试着每隔1000ms检查一次广告是否存在。利用时间进行优化或者添加一个if循环来计数器检查
使用这个简单的javascript bookmarklet:
javascript:document.querySelector('video'(.currentTime=document.querySelect('video`(.duration