ABEMA NextProgramInfo Blocker

ABEMAビデオで次のエピソードへ勝手に移動するのをブロックします

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         ABEMA NextProgramInfo Blocker
// @namespace    https://greasyfork.org/ja/scripts/405272
// @version      1
// @description  ABEMAビデオで次のエピソードへ勝手に移動するのをブロックします
// @include      https://abema.tv/*
// @grant        none
// ==/UserScript==

(() => {
  'use strict';

  const sid = 'NPIBlocker',
    timer = {
      init: 0
    };

  //「次のエピソード」が表示されたらすぐに閉じる・移動をキャンセルする
  const closeNextProgramInfo = () => {
    if (/^https:\/\/abema\.tv\/video\/episode\//.test(location.href)) {
      const cb = document.querySelector('.com-vod-VODNextProgramInfo__close-button'),
        cnpb = document.querySelector('.com-vod-VODScreenOverlayForMiniPlayer__cancel-next-program-button');
      if (cb && cb.hasAttribute('tabindex') && cb.getAttribute('tabindex') !== '-1') {
        cb.click();
      } else if (cnpb) cnpb.click();
    }
  };

  //ページを開いたときに1度だけ実行
  const init = () => {
    const main = document.getElementById('main');
    if (main && !main.classList.contains(sid)) {
      main.classList.add(sid);
      observerM.observe(main, { childList: true, subtree: true });
    }
  };

  const observerM = new MutationObserver(closeNextProgramInfo);
  clearInterval(timer.init);
  timer.init = setInterval(() => {
    if (document.getElementById('main')) {
      clearInterval(timer.init);
      init();
    }
  }, 1000);

})();