Greasy Fork

Bunpro; Helpful Events

A set of custom events which make it easier to detect changes on the page.

目前为 2021-10-22 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/370623/981650/Bunpro%3B%20Helpful%20Events.js

// ==UserScript==
// @name         Bunpro; Helpful Events
// @namespace    http://tampermonkey.net/
// @version      1.0.2
// @author       Kumirei
// @require      https://greasyfork.org/scripts/432418-wait-for-selector/code/Wait%20For%20Selector.js?version=974366
// @include      *bunpro.jp*
// @exclude      *community.bunpro.jp*
// ==/UserScript==

(function (wfs) {
  // Add a custom event for when BP creates a new body
  var newBody = new Event("new-body");
  wfs.wait("body > header", function (e) {
    fireEvent(newBody);
  });

  // Add a custom event for when you get a new item in reviews
  var newReviewItem = new Event("new-review-item");
  wfs.wait(".level_lesson_info a", function (e) {
    fireEvent(newReviewItem);
  });

  // Add a custom event when you go to study or cram page
  var quizPage = new Event("quiz-page");
  wfs.wait("#show-grammar", function (e) {
    fireEvent(quizPage);
  });

  // Add a custom event when you go to study page
  var studyPage = new Event("study-page");
  wfs.wait("#study-page #show-grammar", function (e) {
    fireEvent(studyPage);
  });

  // Add a custom event when you go to cram page
  var cramPage = new Event("cram-page");
  wfs.wait("#cram-page #show-grammar", function (e) {
    fireEvent(cramPage);
  });

  // Fires the given event on the HTML element
  function fireEvent(event) {
    var retryInterval = setInterval(function () {
      if (document.readyState == "complete") {
        $("HTML")[0].dispatchEvent(event);
        clearInterval(retryInterval);
      }
    }, 100);
  }
})(window.wfs);