 
        Greasy Fork is available in English.
A set of custom events which make it easier to detect changes on the page.
当前为 
        此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.icu/scripts/370623/974345/Bunpro%3B%20Helpful%20Events.js
      
// ==UserScript==
// @name         Bunpro; Helpful Events
// @namespace    http://tampermonkey.net/
// @version      1.0.1
// @author       Kumirei
// @require      http://greasyfork.icu/scripts/432418-wait-for-selector/code/Wait%20For%20Selector.js?version=974318
// ==/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);