Greasy Fork is available in English.
解决B站恼人的单个视频自动播放问题,只对HTML5播放器生效。如果是视频集则自动播放,如果是单个视频则不自动播放。
当前为
// ==UserScript==
// @name 关闭B站自动播放下一个视频(自动切集)
// @namespace https://www.tampermonkey.net/
// @version 0.6
// @description 解决B站恼人的单个视频自动播放问题,只对HTML5播放器生效。如果是视频集则自动播放,如果是单个视频则不自动播放。
// @author ProDark
// @match https://www.bilibili.com/*
// @grant none
// @run-at document-end
// ==/UserScript==
(function() {
'use strict';
// Your code here...
function check_list_exist(){
try
{
var tempLists = document.getElementsByTagName("div");
for(var i in tempLists){
var theAttrClass = tempLists[i].getAttribute("class");
if( theAttrClass == "plp-r" || theAttrClass == "cur-list" || theAttrClass == "video-sections")
{//判断是不是列表形连续剧
return true;
}
}
return false;
}
catch(err)
{
return false;
}
}
function ClickButton(Target){
var e = document.createEvent("MouseEvents");
e.initMouseEvent("click", true, false);
Target.dispatchEvent(e);
}
function AutoNextON(){
var divs = document.getElementsByTagName("span");
for(var i=0;i<divs.length;i++){
if( divs[i].innerText == "自动切集")
{
ClickButton(divs[i]);
break;
}
}
}
function AutoNextOFF(){
var divs = document.getElementsByTagName("span");
for(var i=0;i<divs.length;i++){
if( divs[i].innerText == "播完暂停")
{
ClickButton(divs[i]);
break;
}
}
}
function check_fullscreen_button(){
try
{
var tempLists = document.getElementsByTagName("button");
for(var i in tempLists){
var theAttrClass = tempLists[i].getAttribute("class");
if( theAttrClass == "bilibili-player-iconfont bilibili-player-iconfont-fullscreen-off player-tooltips-trigger")
{//判断是不是列表形连续剧
return true;
}
}
return false;
}
catch(err)
{
return false;
}
}
function MainProcess(){
//设置按钮
var buttons = document.getElementsByTagName("button");
for(var i=0;i<buttons.length;i++){
if( buttons[i].getAttribute("class") == "bilibili-player-iconfont bilibili-player-iconfont-setting")
{
var e = document.createEvent("MouseEvents");
e.initMouseEvent("mouseover", true, false );
buttons[i].dispatchEvent(e);
var e2 = document.createEvent("MouseEvents");
e2.initMouseEvent("mouseout", true, false);
buttons[i].dispatchEvent(e2);
//模拟鼠标放到按钮并移开,使其加载 目标按钮节点
break;
}
}
//成功加载
if(check_list_exist()){
AutoNextON();
}
else{
AutoNextOFF();
}
}
function MainTimeOut(){
setTimeout(function(){
if( check_fullscreen_button() == true)
{
MainProcess()
}else{
MainTimeOut()
}
},1000);//延迟1秒执行....我也不知道怎么确定页面加载完了.......
}
window.onload = function(){
MainTimeOut()
}
})();