Greasy Fork

Bunpro; Helpful Events

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

目前为 2021-09-27 提交的版本。查看 最新版本

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.greasyfork.icu/scripts/370623/974369/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
// ==/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);