Greasy Fork is available in English.
隐藏b站充电鸣谢,并且在视频结束时自动跳过。加入渐变,防止结束时闪屏
- // ==UserScript==
- // @name 跳过b站充电鸣谢
- // @namespace voeoc
- // @version 1.2
- // @description 隐藏b站充电鸣谢,并且在视频结束时自动跳过。加入渐变,防止结束时闪屏
- // @author voeoc
- // @match https://www.bilibili.com/video/*
- // @icon https://www.bilibili.com/favicon.ico
- // @grant GM_addStyle
- // @run-at document-idle
- // @license MIT License
- // ==/UserScript==
- (function () {
- 'use strict';
- // 防止闪屏
- // @ts-ignore
- GM_addStyle(`
- .bilibili-player-electric-panel,
- .bpx-player-electric-panel {
- visibility: hidden;
- }
- .bilibili-player-ending-panel,
- .bpx-player-ending-panel {
- opacity: 0;
- transition: opacity 0.3s ease;
- }
- .bilibili-player-ending-panel.visible,
- .bpx-player-ending-panel.visible {
- opacity: 1;
- }`);
- function waitElementLoaded(selector, func, millisecond) {
- const TIME_OUT = 100; // 找100次没有找到就放弃
- let findTimeNum = 0; // 记录查找的次数
- let timer = setInterval(() => {
- let element = document.querySelector(selector);
- if (element != null) {
- // 清除定时器
- clearInterval(timer);
- func(element);
- } else {
- findTimeNum++;
- if (TIME_OUT < findTimeNum) {
- // 清除定时器
- clearInterval(timer);
- }
- }
- }, millisecond);
- }
- waitElementLoaded(".bilibili-player-video, .bpx-player-video-wrap", (videoObjParent) => {
- let electricPanelSelector = ".bilibili-player-electric-panel";
- let endingPanelSelector = ".bilibili-player-ending-panel";
- let jumpBtnSelector = ".bilibili-player-electric-panel-jump-content";
- if (videoObjParent.classList.contains("bpx-player-video-wrap")) { // 兼容新版页面
- electricPanelSelector = ".bpx-player-electric-panel";
- endingPanelSelector = ".bpx-player-ending-panel";
- jumpBtnSelector = ".bpx-player-electric-jump";
- }
- let videoObj = videoObjParent.querySelector("video");
- if (!videoObj) {
- videoObj = videoObjParent.querySelector("bwp-video");
- }
- videoObj.addEventListener('play', function () {
- try {
- // @ts-ignore
- document.querySelector(endingPanelSelector).classList.remove("visible");
- } catch (e) { console.error(e);}
- }, false);
- videoObj.addEventListener('ended', function () {
- // 渐变显示结束屏
- waitElementLoaded(endingPanelSelector, (endingPanel) => {
- endingPanel.classList.add("visible");
- }, 100)
- waitElementLoaded(electricPanelSelector, (electricPanel) => {
- if (electricPanel.style.display != 'none') {
- // 自动点击跳过按钮
- electricPanel.querySelector(jumpBtnSelector).click();
- }
- }, 1)
- }, false);
- }, 200)
- })();