测试CSS代码

(function ($) {
    $.extend({
        silence: (options) => {
            var silence = new Silence();
            silence.init(options);
        }
    });

    class Silence {
        constructor() {
            this.defaluts = {
                profile: {
                    enable: false,
                    avatar: null,
                    favicon: null,
                },
                catalog: {
                    enable: false,
                    move: true,
                    index: true,
                    level1: 'h2',
                    level2: 'h3',
                    level3: 'h4',
                },
                signature: {
                    author: null,
                    enable: false,
                    home: 'https://www.cnblogs.com',
                    license: 'CC BY 4.0',
                    link: 'https://creativecommons.org/licenses/by/4.0'
                },
                sponsor: {
                    enable: true,
                    paypal: null,
                    wechat: 'https://www.cnblogs.com/images/cnblogs_com/zouwangblog/1477590/t_%e5%be%ae%e4%bf%a1%e5%9b%be%e7%89%87_20190704175553.png',
                    alipay: 'https://www.cnblogs.com/images/cnblogs_com/zouwangblog/1477590/t_%e5%be%ae%e4%bf%a1%e5%9b%be%e7%89%87_20190704174158.png'
                },
                github: {
                    enable: false,
                    color: '#fff',
                    fill: null,
                    link: null,
                },
                topImg: {
                    homeTopImg: [
                        "https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190806172418911-2037584311.jpg",
                    ],
                    notHomeTopImg: [
                        "https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190806172418911-2037584311.jpg"
                    ]
                },
                topInfo: {
                    title: 'Hi,Toretto',
                    text: 'You got to put the past behind you before you can move on.',
                    github: "",
                    weibo: "",
                    telegram: "",
                    music: "",
                    twitter: "",
                    zhihu: "",
                    mail: "",
                }
            };

            this.version = '1.0.0';
        }

        get cnblogs() {
            return {
                header: '#header',
                blogTitle: '#blogTitle',
                publicProfile: '#profile_block',
                navigator: '#navigator',
                navList: '#navList',
                sideBar: '#sideBar',
                sideBarMain: '#sideBarMain',
                forFlow: '.forFlow',
                postTitle: '#cb_post_title_url',
                postDetail: '#post_detail',
                postBody: '#cnblogs_post_body',
                postDigg: '#div_digg',
                postCommentBody: '.blog_comment_body',
                feedbackContent: '.feedbackCon',
                postSignature: '#MySignature',
                footer: '#footer',
            };
        }

        get isPostPage() {
            return $(this.cnblogs.postDetail).length > 0;
        }

        /**
         * 初始化
         * @param {Object} options 全局配置选项
         */
        init(options) {
            if (options) {
                $.extend(true, this.defaluts, options);
            }
            this.buildCustomElements();
            this.buildGithubCorner();
            this.buildCopyright();
            this.buildBloggerProfile();
            this.getMainMode();
            this.buildToolbar();
            if (this.isPostPage) {
                this.postHeader();
                this.goIntoReadingMode();
                this.buildPostCatalog();
                this.buildPostCodeCopyBtns();
                this.buildPostSignature();
                this.buildPostFavoriteBtn();
                this.buildPostSponsor();
                this.buildPostCommentAvatars();
                this.setNotHomeTopImg();
            } else {
                this.mainHeader();
                this.goIntoNormalMode();
                this.homeImg();
                this.setHomeSuiBiList();
            }
            this.scrollDy();
        }

        /**
         * 消息弹窗
         * @param {String} content 消息内容
         */
        showMessage(content) {
            $('body').prepend(`<div class="esa-layer"><span class="esa-layer-content">${content}</span></div>`);
            let $layer = $('.esa-layer');
            $layer.fadeIn(200);
            setTimeout(() => {
                $layer.remove();
            }, 2000);
        }

        /**
         * 通用模式设置
         */
        getMainMode() {
            $('.site-branding').hover(function () {
                $('.logolink .sakuraso').css({
                    'background-color': '#FE9600',
                    'color': '#fff'
                })
                $('.chinese-font').css('display', 'block')
            }, function () {
                $('.logolink .sakuraso').css({
                    'background-color': 'rgba(255,255,255,.5)',
                    'color': '#464646'
                })
                $('.chinese-font').css('display', 'none')
            });
            <!--离开页面改变title-->
            var time;
            var normar_title = document.title;
            document.addEventListener('visibilitychange', function () {
                if (document.visibilityState == 'hidden') {
                    clearTimeout(time);
                    document.title = '桥豆麻袋(#°Д°)';
                } else {
                    document.title = '你终于回来了(。・∀・)ノ';
                    time = setTimeout(function () {
                        document.title = normar_title;
                    }, 3000);

                }
            });
        }

        /**
         * 进入阅读模式
         */
        goIntoReadingMode() {
            let $win = $(window);
            let _that = this;
            if ($win.width() > 767) {
                $(_that.cnblogs.header).css('opacity', '1');
                $('#header #navList').css('margin-left', '0px');
                //修改文章布局
                $('#main').css({'margin': '0 auto', 'padding': '0 10px', 'min-width': '950px'});
            }
        }

        /**
         * 进入正常模式
         */
        goIntoNormalMode() {
            let $win = $(window);
            let _that = this;
            var oldScrollY = 0;
            if ($win.width() > 767) {
                $('#main').css({'min-width': '800px'});
                //鼠标悬浮判断,如果页面不是位于顶部则head不消失
                $(_that.cnblogs.header).hover(function () {
                    $(_that.cnblogs.header).css('opacity', '1');
                    $('#header #navList').css('margin-left', '0px');
                }, function () {
                    if ($(document).scrollTop() > 0) {
                        $(_that.cnblogs.header).css('opacity', '1');
                        $('#header #navList').css('margin-left', '0px');
                    } else {
                        $(_that.cnblogs.header).css('opacity', '0');
                        $('#header #navList').css('margin-left', '100px');
                    }

                })
                //鼠标悬浮logo判断
                $('.site-branding').hover(function () {
                    $(_that.cnblogs.header).css('opacity', '1');
                    $('#header #navList').css('margin-left', '0px');
                }, function () {
                    if ($(document).scrollTop() > 0) {
                        $(_that.cnblogs.header).css('opacity', '1');
                        $('#header #navList').css('margin-left', '0px');
                    } else {
                        $(_that.cnblogs.header).css('opacity', '0');
                        $('#header #navList').css('margin-left', '100px');
                    }

                })
                //页面滚动判断
                $win.scroll(function () {
                    oldScrollY = this.scrollY;
                    if (oldScrollY > 0) {
                        $(_that.cnblogs.header).css('opacity', '1');
                        $('#header #navList').css('margin-left', '0px');
                    } else {
                        $(_that.cnblogs.header).css('opacity', '0');
                        $('#header #navList').css('margin-left', '100px');
                    }
                });
            }
        }

        /**
         * 构建自定义 DOM 元素
         */
        buildCustomElements() {
            // Change page title.
            const blogTitle = $(this.cnblogs.blogTitle).find('h1 a').html();
            const autherName = $(this.cnblogs.publicProfile).find('a:eq(0)').html();
            let $title = $('head').find('title');
            $title.html($title.html().replace(`春原庄的雪 | ${autherName}`, `${blogTitle}`));

            // Build a tags button on navbar.
            let $navList = $(this.cnblogs.navList);
            $.each($navList.find('li'), (index, nav) => {
                $(nav).append('<i></i>');
            });

            // Build a menu button on mobile browser.
            $('body').prepend(`<div class="esa-mobile-menu"></div>`);
            $('.esa-mobile-menu').on('click', () => {
                $(this.cnblogs.navigator).fadeToggle(200);
            });

            //回到顶部特效
            $('body').prepend(`<a href="#" class="cd-top faa-float animated cd-fade-out"></a>`);
            let $win = $(window);
            let oldScrollY = 0;
            $win.scroll(function () {
                oldScrollY = this.scrollY;
                let height = window.innerHeight;
                let top = '-' + (900 - height + 80) + 'px';
                if (oldScrollY > 0) {
                    $('.cd-top').css('top', top);
                } else {
                    $('.cd-top').css('top', '-900px');
                }
            });


            $("#navList").append('<li><a id="blog_nav_myyoulian" class="menu" href="https://www.cnblogs.com/zouwangblog/articles/11177049.html">友链</a><i></i></li><li><a id="blog_nav_myzanshang" class="menu" href="https://www.cnblogs.com/zouwangblog/articles/11340077.html">赞赏</a><i></i></li><li><a id="blog_nav_myguanyu" class="menu" href="">关于</a><i></i></li>');
            //添加标签icon
            $('#blog_nav_myhome').prepend('<i class="fa fa-fort-awesome" aria-hidden="true"></i>');
            $('#blog_nav_contact').prepend('<i class="fa fa-address-book-o" aria-hidden="true"></i>');
            $('#blog_nav_rss').prepend('<i class="fa fa-rss faa-pulse" aria-hidden="true"></i>');
            $('#blog_nav_admin').prepend('<i class="fa fa-list" aria-hidden="true"></i>');
            $('#blog_nav_myyoulian').prepend('<i class="fa fa-link" aria-hidden="true"></i>');
            $('#blog_nav_myzanshang').prepend('<i class="fa fa-heart" aria-hidden="true"></i>');
            $('#blog_nav_myguanyu').prepend('<i class="fa fa-leaf" aria-hidden="true"></i>');

            //添加li内嵌ui
            let guanyu = '<ul class="sub-menu">' +
                    '<li><a href="https://www.cnblogs.com/zouwangblog/articles/11157339.html "><i class="fa fa-meetup" aria-hidden="true"></i> 我?</a></li>' +
                    '<li><a href="https://www.cnblogs.com/zouwangblog/articles/11346906.html "><i class="fa fa-area-chart" aria-hidden="true"></i> 统计</a></li>' +
                    '<li><a href="https://www.cnblogs.com/zouwangblog/articles/11350777.html "><i class="fa fa-heartbeat" aria-hidden="true"></i> 监控</a></li>' +
                    '<li><a href="https://www.cnblogs.com/zouwangblog/p/11541835.html "><i class="iconfont icon-taohua" aria-hidden="true"></i> 主题</a></li>' +
                    '</ul>';
            $('#blog_nav_myguanyu').after(guanyu);

        }

        /**
         * 构建主题版权信息
         */
        buildCopyright() {
            //这里能保留么,算是我的一个小心愿。
            var content = `<div> Powered By <a href="https://www.cnblogs.com" target="_blank">Cnblogs</a> |
            Theme <a href="https://github.com/Zou-Wang/CNblogs-Theme-Sakura" target="_blank">Toretto v${this.version}</a></div>`;
            $(this.cnblogs.footer).append(content);
        }

        /**
         * 构建博客签名
         */
        buildPostSignature() {
            const config = this.defaluts.signature;
            if (config.enable) {
                const postUrl = $(this.cnblogs.postTitle).attr('href');
                const authorName = config.author || $(this.cnblogs.publicProfile).find('a:eq(0)').html();

                const content =
                        `<div class="esa-post-signature"> 
                    <p>作者:<a href="${config.home}">${authorName}</a></p> 
                    <p>出处:<a href="${postUrl}">${postUrl}</a></p> 
                    <p>本站使用「<a href="${config.link}"  target="_blank">${config.license}</a>」创作共享协议,转载请在文章明显位置注明作者及出处。</p> 
                </div>`;

                $(this.cnblogs.postSignature).html(content).show();
            }
        }

        /**
         * 构建评论者头像
         */
        buildPostCommentAvatars() {
            var builder = () => {
                $(this.cnblogs.postCommentBody).before(`<div class='esa-comment-avatar'><a target='_blank'><img /></a></div>`);
                let feedbackCon = $(this.cnblogs.feedbackContent);
                for (var i = 0; i < feedbackCon.length; i++) {
                    let avatar = 'https://pic.cnblogs.com/face/sample_face.gif';
                    let span = $(feedbackCon[i]).find("span:last")[0];
                    if (span) {
                        avatar = $(span).html().replace('http://', '//');
                    }
                    $(feedbackCon[i]).find(".esa-comment-avatar img").attr("src", avatar);
                    let href = $(feedbackCon[i]).parent().find(".comment_date").next().attr("href");
                    $(feedbackCon[i]).find(".esa-comment-avatar a").attr("href", href);
                }
            }
            if ($(this.cnblogs.postCommentBody).length) {
                builder();
            } else {
                let count = 1;
                // poll whether the feedbacks is loaded.
                let intervalId = setInterval(() => {
                    if ($(this.cnblogs.postCommentBody).length) {
                        clearInterval(intervalId);
                        builder();
                    }
                    if (count == 10) {
                        // no feedback.
                        clearInterval(intervalId);
                    }
                    count++;
                }, 500);
            }
        }

        /**
         * 构建赞赏模块
         */
        buildPostSponsor() {
            const sponsor = this.defaluts.sponsor;
            const github = this.defaluts.github;
            const that = this;
            if (!sponsor.enable) {
                return;
            }

            $('#blog_post_info').prepend(`
            <div class="esa-sponsor">
                <a class="github" href="${github.enable ? github.link : 'https://github.com/Kaiyuan/donate-page'}" target="_blank" class="posa tr3" title="Github"></a>
                <div class="text tr3">${sponsor.text || 'Sponsor'}</div>
                <ul class="box posa tr3">
                    <li class="paypal">PayPal</li>
                    <li class="alipay">AliPay</li>
                    <li class="wechat">WeChat</li>
                </ul>
                <div id="QRBox" class="posa left-100">
                    <div id="MainBox"></div>
                </div>
            </div>`);

            const $sponsor = $('.esa-sponsor');
            const QRBox = $('#QRBox');
            const MainBox = $('#MainBox');

            function showQR(QR) {
                if (QR) {
                    MainBox.css('background-image', 'url(' + QR + ')');
                }
                $sponsor.find('.text, .box, .github').addClass('blur');
                QRBox.fadeIn(300, function () {
                    MainBox.addClass('showQR');
                });
            }

            $sponsor.find('.box>li').click(function () {
                var type = $(this).attr('class');
                if (type === 'paypal') {
                    if (!sponsor.paypal) {
                        return that.showMessage('博主忘记设置 PayPal 收款地址');
                    }
                    window.open(sponsor.paypal, '_blank');
                } else if (type === 'alipay') {
                    if (!sponsor.alipay) {
                        return that.showMessage('博主忘记设置支付宝收款二维码');
                    }
                    showQR(sponsor.alipay);
                } else if (type === 'wechat') {
                    if (!sponsor.wechat) {
                        return that.showMessage('博主忘记设置微信收款二维码');
                    }
                    showQR(sponsor.wechat);
                }
            });

            MainBox.click(function () {
                MainBox.removeClass('showQR').addClass('hideQR');
                setTimeout(function (a) {
                    QRBox.fadeOut(300, function () {
                        MainBox.removeClass('hideQR');
                    });
                    $sponsor.find('.text, .box, .github').removeClass('blur');
                }, 600);
            });
        }

        /**
         * 构建收藏按钮
         */
        buildPostFavoriteBtn() {
            let builder = () => {
                $(this.cnblogs.postDigg).prepend(`<div class="favorite" onclick="AddToWz(cb_entryId);return false;"><span class="favoritenum" id="favorite_count"></span></div>`);
            };

            if ($(this.cnblogs.postDigg).length) {
                builder();
            } else {
                let intervalId = setInterval(() => {
                    if ($(this.cnblogs.postDigg).length) {
                        clearInterval(intervalId);
                        builder();
                    }
                }, 200);
            }
        }

        /**
         * 构建博客目录
         */
        buildPostCatalog() {
            const config = this.defaluts.catalog;

            if (config.enable) {
                let levels = [config.level1, config.level2, config.level3];
                let $headers = $(this.cnblogs.postBody).find(levels.join(','));

                if (!$headers.length) {
                    return false;
                }

                let $catalog = $(
                        `<div class="esa-catalog">
                        <div class="esa-catalog-contents">
                            <div class="esa-catalog-title">目录</div>
                            <a class="esa-catalog-close">✕</a>
                        </div>
                    </div>`);

                let h1c = 0;
                let h2c = 0;
                let h3c = 0;

                let catalogContents = '<ul>';

                let cryptoObj = window.crypto || window.msCrypto; // for IE 11
                let eleIds = cryptoObj.getRandomValues(new Uint32Array($headers.length));

                $.each($headers, (index, header) => {
                    const tagName = $(header)[0].tagName.toLowerCase();
                    let titleIndex = '';
                    let titleContent = $(header).html();
                    let title = titleContent;
                    if (!config.index) {
                        switch (tagName) {
                            case config.level1:
                                titleContent = `<span class="level1">${titleContent}</span>`;
                                break;
                            case config.level2:
                                titleContent = `<span class="level2">${titleContent}</span>`;
                                break;
                            case config.level3:
                                titleContent = `<span class="level3">${titleContent}</span>`;
                                break;
                        }
                    } else {
                        if (tagName === config.level1) {
                            h1c++;
                            h2c = 0;
                            h3c = 0;
                            titleIndex = `<span class="level1">${h1c}. </span>`;
                        } else if (tagName === config.level2) {
                            h2c++;
                            h3c = 0;
                            titleIndex = `<span class="level2">${h1c}.${h2c}. </span>`;
                        } else if (tagName === config.level3) {
                            h3c++;
                            titleIndex = `<span class="level3">${h1c}.${h2c}.${h3c}. </span>`;
                        }
                    }

                    var idx = eleIds[index];

                    catalogContents +=
                            `<li class="li_${tagName}" title="${title}">
                            <i class="${idx}" ></i><a class="esa-anchor-link">${(titleIndex + titleContent)}</a>
                        </li>`;

                    $(header).attr('id', `${idx}`)
                            .html(`<span>${titleContent}</span><a href="#${idx}" class="esa-anchor">#</a>`)
                            .hover(() => {
                                $(header).find('.esa-anchor').css('opacity', 1);
                            }, () => {
                                $(header).find('.esa-anchor').css('opacity', 0);
                            });
                });
                catalogContents += `</ul>`;

                $catalog.find('.esa-catalog-contents').append(catalogContents);
                $catalog.appendTo('body');

                let $tabContent = $('.esa-catalog-contents');

                $tabContent.fadeIn();

                $('.esa-anchor-link').on('click', function () {
                    let position = $('#' + ($(this).prev('i').attr('class'))).offset().top - 80;
                    $('html, body').animate({
                        scrollTop: position
                    }, 300);
                });

                $('.esa-catalog-close').on('click', () => {
                    $tabContent.hide();
                });

                if (config.move) {
                    let move = {
                        start: false,
                        pois: [0, 0],
                    };
                    $('.esa-catalog-title').on('mousedown', function (e) {
                        e.preventDefault();
                        move.start = true;
                        let position = $('.esa-catalog').position();
                        let poisX = e.clientX - parseFloat(position.left);
                        let poisY = e.clientY - parseFloat(position.top);
                        move.pois = [poisX, poisY];
                    });
                    $(document).on('mousemove', (e) => {
                        if (move.start) {
                            let offsetX = e.clientX - move.pois[0];
                            let offsetY = e.clientY - move.pois[1];
                            let fixed = $('.esa-catalog').css('position') === 'fixed';

                            e.preventDefault();

                            move.stX = fixed ? 0 : $(window).scrollLeft();
                            move.stY = fixed ? 0 : $(window).scrollTop();

                            let setRig = $(window).width() - $('.esa-catalog').outerWidth() + move.stX;
                            let setBot = $(window).height() - $('.esa-catalog').outerHeight() + move.stY;

                            offsetX < move.stX && (offsetX = move.stX);
                            offsetX > setRig && (offsetX = setRig);
                            offsetY < move.stY && (offsetY = move.stY);
                            offsetY > setBot && (offsetY = setBot);

                            $('.esa-catalog').css({
                                left: offsetX,
                                top: offsetY,
                                right: 'auto',
                            });
                        }
                    }).on('mouseup', (_e) => {
                        if (move.start) {
                            move.start = false;
                        }
                    });
                }
            }
        }

        /**
         * 构建 Github Corner
         */
        buildGithubCorner() {
            const config = this.defaluts.github;
            if (config.enable) {
                let fillStyle = config.fill ? `fill:${config.fill};` : '';
                $('body').append(
                        `<a href="${config.link}" class="github-corner" title="Fork me on GitHub">
                        <svg width="60" height="60" viewBox="0 0 250 250" style="${fillStyle} color:${config.color}; z-index: 999999; position: fixed; top: 0; border: 0; left: 0; transform: scale(-1, 1);" aria-hidden="true">
                            <path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
                            <path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path>
                            <path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path>
                        </svg>
                    </a>`);
            }
        }

        /**
         * 构建代码复制按钮
         */
        buildPostCodeCopyBtns() {
            let $pres = $('.postBody .cnblogs-markdown').find('pre');

            if (!$pres.length) {
                return false;
            }

            $.each($pres, (index, pre) => {
                $(pre).find('code').attr('id', `copy_target_${index}`);
                $(pre).prepend(`<div class="esa-clipboard-button" data-clipboard-target="#copy_target_${index}" title="复制代码">Copy</div>`);
            });

            $.getScript(`https://unpkg.com/clipboard@2.0.0/dist/clipboard.min.js`, () => {
                let clipboard = new ClipboardJS('.esa-clipboard-button');
                clipboard.on('success', (e) => {
                    this.showMessage('代码已复制到粘贴板中');
                    e.clearSelection();
                });
                clipboard.on('error', (e) => {
                    this.showMessage('代码复制失败');
                });
            });
        }

        /**
         * 构建工具栏
         */
        buildToolbar() {
            const catalog = this.defaluts.catalog;

            $('body').append(`<div class="esa-toolbar">
                <!--<button class="esa-toolbar-gotop"><div class="tips">返回顶部</div></button>-->
                <!--<button class="esa-toolbar-contents"><div class="tips">阅读目录</div></button>-->
                <button class="esa-toolbar-follow">捕获</button>
            </div>`);

            // let $btnGotop = $('.esa-toolbar-gotop');
            // let $btnContents = $('.esa-toolbar-contents');
            let $btnFollow = $('.esa-toolbar-follow');

            // if (catalog.enable) {
            //     $btnContents.on('click', () => {
            //         let $catalog = $('.esa-catalog-contents');
            //         if ($catalog.css('display') == 'none') {
            //             $catalog.fadeIn();
            //         } else {
            //             $catalog.hide();
            //         }
            //     }).hover(() => {
            //         $btnContents.find('.tips').show();
            //     }, () => {
            //         $btnContents.find('.tips').hide();
            //     });
            // } else {
            //     $btnContents.remove();
            // }
            //
            // $btnGotop.on('click', () => {
            //     $(window).scrollTop(0);
            // }).hover(() => {
            //     $btnGotop.find('.tips').show();
            // }, () => {
            //     $btnGotop.find('.tips').hide();
            // });
            //
            // $(window).scroll(function () {
            //     if (this.scrollY > 200) {
            //         $btnGotop.fadeIn();
            //     } else {
            //         $btnGotop.fadeOut();
            //     }
            // });

            $btnFollow.on('click', () => {
                loadLink(location.protocol + "//common.cnblogs.com/scripts/artDialog/ui-dialog.css", () => {
                    loadScript(location.protocol + "//common.cnblogs.com/scripts/artDialog/dialog-min.js", () => {
                        if (!isLogined) {
                            return login();
                        }
                        if (c_has_follwed) {
                            return this.showMessage('您已经关注过该博主');
                        }
                        const n = cb_blogUserGuid;
                        $.ajax({
                            url: "/mvc/Follow/FollowBlogger.aspx",
                            data: '{"blogUserGuid":"' + n + '"}',
                            dataType: "text",
                            type: "post",
                            contentType: "application/json; charset=utf-8",
                            success: (msg) => {
                                msg == "未登录" ? login() : (msg == "关注成功" && followByGroup(n, !0));
                                this.showMessage(msg);
                            }
                        })
                    })
                })
            }).hover(() => {
                $btnFollow.find('.tips').show();
            }, () => {
                $btnFollow.find('.tips').hide();
            });
        }

        /**
         * 构建博主信息
         */
        buildBloggerProfile() {
            const config = this.defaluts.profile;

            if (!config.enable) {
                return;
            }

            if (!this.isPostPage && config.avatar) {
                $(this.cnblogs.sideBarMain).prepend(`<img class="esa-profile-avatar" src="${config.avatar}" />`);
            }

            if (config.favicon) {
                $('head').append(`<link rel="shortcut icon" href="${config.favicon}" type="image/x-icon" />`);
            }

            //博客logo
            var title = '<div class="site-branding">' +
                    '<span class="logolink moe-mashiro">' +
                    '<a href="https://www.cnblogs.com/zouwangblog/" alt="春原庄的雪">' +
                    '<ruby><span class="sakuraso">すのはら荘</span><span class="no">の</span><span class="shironeko">雪</span>' +
                    '<rt class="chinese-font">春原庄的雪</rt></ruby></a></span>' +
                    '</div>'
            $('body').prepend(title);


        }

        /**
         * 构建顶部滚动进度条 需要在页面dom元素构建成功之后再计算文档高度。
         */
        scrollDy() {
            let that = this;
            $('body').prepend(`<div class="scrollCls" id="scrollInfo"></div>`);
            // 可滚动的总高度
            var scrollTotal = this.getScrollHeight() - this.getWindowHeight();
            // 获取dom元素
            var scrollEl = document.getElementById('scrollInfo')
            $(window).scroll(function () {
                // 已经滚动距离
                var sHeight = that.getScrollTop();
                // 占比
                var bl = Math.min((sHeight / scrollTotal) * 100, 100);
                // 设置
                scrollEl.style.width = bl + '%';
            })

        }

        // 已经滚动距离
        getScrollTop() {
            var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
            if (document.body) {
                bodyScrollTop = document.body.scrollTop;
            }
            if (document.documentElement) {
                documentScrollTop = document.documentElement.scrollTop;
            }
            scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
            return scrollTop;
        }

        // 文档的总高度
        getScrollHeight() {
            var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
            if (document.body) {
                bodyScrollHeight = document.body.scrollHeight;
            }
            if (document.documentElement) {
                documentScrollHeight = document.documentElement.scrollHeight;
            }
            scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
            return scrollHeight;
        }

        // 窗体高度
        getWindowHeight() {
            var windowHeight = 0;
            if (document.compatMode == "CSS1Compat") {
                windowHeight = document.documentElement.clientHeight;
            } else {
                windowHeight = document.body.clientHeight;
            }
            return windowHeight;
        }

        //=========================设置主页逻辑
        /**
         * 构建主页头部html
         * headertop 网格遮罩
         */
        mainHeader() {
            const config = this.defaluts.topInfo;
            var header =
                    `<div class="headertop filter-dot">` +
                    `</div>` +
                    `<div class="main-header">` +
                    `</div>` +
                    `<div class="focusinfo no-select">` +
                    `       <h1 class="center-text glitch is-glitching Ubuntu-font" data-text="Hi, Toretto!">${config.title}</h1>` +
                    `       <div class="header-info"><p><i class="fa fa-quote-left"></i> ${config.text} <i class="fa fa-quote-right"></i></p>` +
                    `           <div class="top-social_v2">` +
                    `              <li id="bg-pre"><img class="flipx" src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808103709869-648245711.png"></li>` +
                    `              <li><a href="${config.github}" target="_blank" class="social-github" title="github"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808095618459-218538626.png"></a></li>` +
                    `              <li><a href="${config.weibo}" target="_blank" class="social-sina" title="sina"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808095623418-1617766229.png"></a></li>` +
                    `              <li><a href="${config.telegram}" target="_blank" class="social-lofter" title="telegram"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808095628401-835828752.png"></a></li>` +
                    `              <li><a href="${config.music}" target="_blank" class="social-wangyiyun" title="CloudMusic"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808095640330-1209750721.png"></a></li>` +
                    `              <li><a href="${config.twitter}" target="_blank" class="social-wangyiyun" title="Twitter"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808095635213-701885869.png"></a></li>` +
                    `              <li><a href="${config.zhihu}" target="_blank" class="social-wangyiyun" title="Zhihu"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808095650119-1882504549.png"></a></li>` +
                    `              <li><a href="${config.mail}" target="_blank" class="social-wangyiyun" title="E-mail"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808095613956-1350546638.png"></a></li>` +
                    `              <li id="bg-next"><img src="https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190808103709869-648245711.png"></li>` +
                    `           </div>` +
                    `      </div>` +
                    `</div>` +
                    `<div class="wave">` +
                    `   <div id="banner_wave_1"></div>` +
                    `   <div id="banner_wave_2"></div>` +
                    `</div>` +
                    `<div class="scroll-down" data-offset="-45">` +
                    `        <span class="hidden">Scroll Down</span>` +
                    `        <i class="fa fa-chevron-down" aria-hidden="true"></i>` +
                    `</div>`;
            $('#home').prepend(header);
        }

        /**
         * 构建主页头图
         */
        homeImg() {
            const config = this.defaluts.topImg;
            // 设置主页图片
            let homeTopImg = config.homeTopImg, bgImg;
            let index = this.randomNum(0, homeTopImg.length - 1);
            homeTopImg.length > 0 ?
                    (homeTopImg.length > 1 ? bgImg = homeTopImg[index] : bgImg = homeTopImg[0])
                    : bgImg = "";
            $('.main-header').css({
                'background-image': 'url(' + bgImg + ')',
            });

            // 头图点击滚动到内容位置
            $('.scroll-down').click(function () {
                let endScroll;
                endScroll = $('#main').offset().top - 20;
                $('html,body').stop().animate({scrollTop: endScroll}, 1000);
            });

            //切换首页壁纸
            $('#bg-pre').click(function () {
                index--;
                if (index < 0) {
                    index = homeTopImg.length - 1
                }
                let nextImg = homeTopImg[index]
                $('.main-header').css({
                    'background-image': 'url(' + nextImg + ')',
                });
            });
            $('#bg-next').click(function () {
                index++;
                if (index > homeTopImg.length - 1) {
                    index = 0
                }
                let preImg = homeTopImg[index]
                $('.main-header').css({
                    'background-image': 'url(' + preImg + ')',
                });

            })
        }

        /**
         * 构建首页随笔列表
         */
        setHomeSuiBiList() {
            let article_list = document.getElementsByClassName('day');
            let author = $(this.cnblogs.publicProfile).find('a:eq(0)').html() //作者
            for (let i = article_list.length - 1; i >= 0; i--) {
                let time = $('.day').find('div.dayTitle')[i].textContent.replace('年', '-').replace('月', '-').replace('日', ''); //获取年月日
                let postTitle = $('.day').find('div.postTitle')[i].innerHTML;//<a class="postTitle2" href="https://www.cnblogs.com/zouwangblog/p/11194299.html">[置顶] 博客园美化</a>
                let readMore = $('.day').find('a.c_b_p_desc_readmore')[i].href;//https://www.cnblogs.com/zouwangblog/p/11194299.html
                let content = $('.day').find('div.c_b_p_desc')[i].textContent.replace('阅读全文', ''); //摘要
                let desc = $('.day').find('div.postDesc')[i].textContent;//posted @ 2019-07-16 13:27 ふじさんの雪 阅读 (3073) 评论 (56)<a href="https://i.cnblogs.com/EditPosts.aspx?postid=11194299" rel="nofollow">编辑</a>
                let readNum = desc.substring(desc.indexOf("(") + 1, desc.indexOf(")")); //阅读量
                let comNum = desc.substring(desc.lastIndexOf("(") + 1, desc.lastIndexOf(")")); //评论量
                let bianji = $('.day').find('div.postDesc')[i].firstElementChild.href; //获取编辑链接 https://i.cnblogs.com/EditPosts.aspx?postid=11194299
                let url
                let desc_img = article_list[i].getElementsByClassName('desc_img')[0];
                if (desc_img !== undefined) {
                    url = desc_img.src;//https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190807204419622-1770363151.jpg
                } else {
                    url = 'https://www.icode9.com/i/l/?n=18&i=blog/1646268/201908/1646268-20190807151203983-873040918.jpg'
                }
                let html = `<div class="post post-list-thumb post-list-show">` +
                        `  <div class="post-thumb"> <a href="${readMore}"> <img class="lazyload" src="${url}"  data-src="${url}"> </a></div>` +
                        `  <div class="post-content-wrap">` +
                        `   <div class="post-content">` +
                        `     <div class="post-date"> <i class="iconfont icon-time"></i>发布于 ${time}</div>` +
                        `     <div class="post-title">${postTitle}</div>` +
                        `     <div class="post-meta"> <span><i class="iconfont icon-attention"></i>${readNum} 热度</span> <span class="comments-number"><i class="iconfont icon-mark"></i>${comNum} 条评论</span> <span><i class="iconfont icon-cc-user"></i><a href="https://www.cnblogs.com/zouwangblog/p/11157339.html"></a>${author}</span></div>` +
                        `     <div class="float-content"><p>${content}</p>` +
                        `        <div class="post-bottom">` +
                        `           <a href="${readMore}" class="button-normal"><i class="iconfont icon-gengduo"></i></a>` +
                        `           <a href="${bianji}" class="button-normal"><i class="iconfont icon-bianji"></i></a>` +
                        `        </div>` +
                        `     </div>` +
                        `  </div>` +
                        ` </div>` +
                        `</div>`;
                $('.forFlow').prepend(html);
            }
            $('.post-list-thumb:odd').addClass('post-list-thumb-left')

            //构建notice
            const config = this.defaluts.profile;
            let notice = `<div class="notice"> <i class="iconfont icon-notification"></i><div class="notice-content">${config.notice}</div></div>`
            $('#main').prepend(notice);
        }

        //=================阅读页逻辑
        /**
         * 构建阅读页头部html 如果是文章则只显示标题,如果是随笔则显示发布时间,头像,阅读量
         */
        postHeader() {
            var center =
                    '<div class="pattern-center">' +
                    ' <div class="pattern-attachment-img"><img src="" data-src=""' +
                    '    style="width: 100%; height: 100%; object-fit: cover; pointer-events: none;"></div>' +
                    ' <header class="pattern-header "><h1 class="entry-title"></h1></header>' +
                    '</div>';
            $('#home').prepend(center);
            const sbTitle = $('#cb_post_title_url').text();
            $('.entry-title').text(sbTitle);// 设置标题
            $('.postTitle').css('display', 'none');
            let post_date = $('#post-date').text() //发布时间
            let post_view_count = $('#post_view_count').text() //阅读数
            if (window.location.href.indexOf('articles') === -1) {
                var header =
                        `<p class="entry-census"><span><a href="https://www.cnblogs.com/zouwangblog/"><img src="//pic.cnblogs.com/face/1646268/20190628143903.png"></a></span><span><a href="https://www.cnblogs.com/zouwangblog/">Toretto</a></span><span class="bull">·</span>${post_date}<span class="bull">·</span>${post_view_count} 次阅读</p>`;
                $('.pattern-header').append(header)
                $('.pattern-center').addClass('single-center')
                $('.pattern-header').addClass('single-header')
            } else {
                return
            }

        }

        /**
         * 构建非主页头图
         */
        setNotHomeTopImg = function () {
            const config = this.defaluts.topImg;
            // 设置主页图片
            let notHomeTopImg = config.notHomeTopImg, bgImg;

            notHomeTopImg.length > 0 ?
                    (notHomeTopImg.length > 1 ? bgImg = notHomeTopImg[this.randomNum(0, notHomeTopImg.length - 1)] : bgImg = notHomeTopImg[0])
                    : bgImg = "";
            $('.pattern-attachment-img img').attr('src', bgImg);
        };

        /**
         * 随机数
         */
        randomNum = function (minNum, maxNum) {
            switch (arguments.length) {
                case 1:
                    return parseInt(Math.random() * minNum + 1);
                    break;
                case 2:
                    return parseInt(Math.random() * (maxNum - minNum + 1) + minNum);
                    break;
                default:
                    return 0;
                    break;
            }
        };
    }
})(jQuery);

 

上一篇:RestTemplate 统一添加 Header


下一篇:Golang Map实现(四) map 的赋值和扩容