Greasy Fork

Greasy Fork is available in English.

慕课小助手

慕课网问答区快速查看问答详情、自动播放下一节视频

当前为 2020-05-03 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         慕课小助手
// @namespace    https://github.com/maomao1996/tampermonkey-scripts
// @version      0.3.3
// @description  慕课网问答区快速查看问答详情、自动播放下一节视频
// @author       maomao1996
// @include      *://coding.imooc.com/learn/qa/*
// @include      *://coding.imooc.com/lesson/*
// @grant        none
// ==/UserScript==
;
(function () {
    'use strict';
    // 问答区样式
    var STYLE_MAP = {
        'learn/qa': ".mm-modal {\n      position: fixed;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      left: 0;\n      z-index: 1996;\n      display: none;\n      overflow-y: auto;\n    }\n    .mm-mask {\n      position: fixed;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      left: 0;\n      z-index: 1;\n      background-color: rgba(0, 0, 0, 0.5);\n    }\n    .mm-modal-x {\n      overflow: hidden;\n      position: absolute;\n      top: 10%;\n      bottom: 5%;\n      left: 50%;\n      z-index: 2;\n      border-radius: 20px;\n      padding: 25px;\n      width: 780px;\n      min-height: 480px;\n      background: #fff;\n      transform: translateX(-50%);\n    }\n    .mm-modal-x::before {\n      position: absolute;\n      top: 0;\n      left: 0;\n      z-index: -1;\n      width: 100%;\n      content: '\u6570\u636E\u52A0\u8F7D\u4E2D...';\n      font-size: 24px;\n      text-align: center;\n      line-height: 480px;\n    }"
    };
    function addStyle(type) {
        var rules = STYLE_MAP[type];
        if (!rules) {
            return;
        }
        $('head').append("<style>" + rules + "</style>");
    }
    /**
     * 问答区
     */
    // 获取按钮 html
    function getBntHtml(id) {
        return ('<a class="mm-btn" href="javascript:void(0)" data-id="' +
            id +
            '">弹窗查看</a>');
    }
    // 插入弹窗 dom
    function appendModal() {
        var modalHtml = '<div class="mm-modal" id="mm-modal"><div class="mm-mask"></div><div class="mm-modal-x"><iframe id="mm-content" width="100%" height="100%" frameborder="0"></firame></div></div>';
        $('body').append(modalHtml);
    }
    // 点击事件
    function handleClick() {
        var id = $(this).data('id');
        $('#mm-modal').show().scrollTop(0);
        var $content = $('iframe#mm-content');
        $content
            .attr('src', "//coding.imooc.com/learn/questiondetail/" + id + ".html")
            .on('load', function () {
            var iframeCtx = $(this).contents();
            var style = "<style id=\"mm-style\">html {width: 780px!important;min-width: 780px!important;overflow-x:hidden} html .wrap {margin: 0 2px!important;}#new_header,#footer,html .col-aside.wenda-col-aside {display: none!important;}.layout{padding-bottom: 2px;}</style>";
            iframeCtx.find('head').append(style);
        });
    }
    // 问答区初始化
    function qaInit() {
        $('.qa-item-title').each(function () {
            var id = $(this).find('a').attr('href').replace(/\D/g, '');
            $(this).append(getBntHtml(id));
        });
        appendModal();
        $(document).on('click', '.mm-mask', function () {
            $('#mm-modal').hide();
            $('#mm-content').attr({ src: '' });
        });
        $('#qa-list').on('click', '.mm-btn', handleClick);
    }
    /**
     * 视频详情
     */
    // 初始化
    function videoInit() {
        setTimeout(function () {
            $('video').on('ended', function () {
                var _a;
                console.log('当前视频播放完毕,即将播放下一节');
                (_a = $('.next-btn.js-next-media')[0]) === null || _a === void 0 ? void 0 : _a.click();
            });
        }, 2e3);
    }
    // 初始化操作
    $(window).on('load', function () {
        var pathname = location.pathname;
        var TYPE = pathname.substr(1, pathname.lastIndexOf('/') - 1);
        // 重置样式
        addStyle(TYPE);
        switch (TYPE) {
            // 问答区
            case 'learn/qa':
                console.log('问答区');
                qaInit();
                break;
            // 视频详情
            case 'lesson':
                console.log('视频详情');
                videoInit();
                $(window).on('hashchange', videoInit);
                break;
            default:
                break;
        }
    });
})();