Greasy Fork

Greasy Fork is available in English.

机核文章页视频自动隐藏

自动隐藏文章页面上的视频(被自动播放烦得不要不要的)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         机核文章页视频自动隐藏
// @namespace    https://github.com/silevilence/enhances-g-cores
// @version      1.1
// @description  自动隐藏文章页面上的视频(被自动播放烦得不要不要的)
// @author       Silevilence
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js
// @match        http*://www.gcores.com/articles/*
// @supportURL   https://github.com/silevilence/enhances-g-cores/issues
// @contributionURL https://www.paypal.com/cgi-bin/webscr?cmd=_donations&[email protected]&item_name=Greasy+Fork+donation
// ==/UserScript==

(function () {
    'use strict';

    // 机核现在不用jQuery了,需要自己引入
    /**
     * 隐藏视频用的函数
     * @param video 带视频的外层div
     * @param timeout 延时
     */
    function hideVideo(video, timeout) {
        // 现在外层是figure
        let figure = $(video).parent();

        window.setTimeout(function () {

            figure.addClass('story_block-spoiler');

            if ($(video).find('iframe').length === 0) {
                hideVideo(video, timeout * 2);
                return;
            }

            // 提示按钮
            let div = document.createElement('div');
            $(div).addClass('story_hidden');
            $(div).attr('role', 'button');
            div.tabIndex = -1;

            // 提示文字
            let p = document.createElement('p');
            $(p).text('这里有一个被自动隐藏的视频');

            let strong = document.createElement('strong');
            $(strong).text('点击查看');

            div.append(p);
            div.append(strong);

            $(function () {
                $(div).click(function () {
                    figure.removeClass('story_block-spoiler');
                });
            });

            figure.prepend(div);
        }, timeout);
    }

    // 每个视频放在一个div中,class带有story_embed-video
    let videos = $('div.story_embed-video');
    // 用each针对每个视频进行单独的隐藏处理,处理方式模仿机核的剧透隐藏功能
    videos.each(function () {

        // 已经被隐藏了
        if ($(this).parent().hasClass('story_block-spoiler')) {
            console.log('A video is already hidden.');
            return;
        }

        hideVideo(this, 2000);

        // 新版换了个处理方式,下面的代码全部木大
        // 其实能用,只是会很难看而已
        /*
        // 获取外层html并作为字符串保存在一个隐藏的textarea中
        let str = this.outerHTML;
        let textarea = document.createElement('textarea');
        // noinspection SpellCheckingInspection
        $(textarea).addClass('j_storyshow_textareaEmbed');
        $(textarea).hide();
        $(textarea).text(str);
        // 删除视频的iframe标签
        $(this).remove();
        // 生成一个显示隐藏内容的a标签
        let a = document.createElement('a');
        $(a).attr('href', 'javascript:;');
        $(a).text('这是插件自动隐藏的视频,点击以显示');
        // noinspection SpellCheckingInspection
        $(a).addClass('story_elem-embed_manual j_storyshow_showEmbed');
        // 设置a标签的点击事件,参考了机核本身的源码
        $(function () {
            $(a).click(function () {
                $(this).hide();
                // noinspection SpellCheckingInspection
                let e = $(this).siblings('.j_storyshow_textareaEmbed');
                e.replaceWith(e.val());
            });
        });
        // 对父级div通过前端插入的方式依次放入a和textarea
        figure.prepend($(a));
        figure.prepend($(textarea));
        */
    });
})();