煎蛋多说评论框拯救计划

煎蛋多说评论框拯救计划,拯救被“评论框出错啦(990015): 服务异常,请联系客服人员”折磨的你。

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         煎蛋多说评论框拯救计划
// @namespace    http://jandan.net/?JandanTucao
// @version      0.1
// @description  煎蛋多说评论框拯救计划,拯救被“评论框出错啦(990015): 服务异常,请联系客服人员”折磨的你。
// @author       Jandaner
// @match        *://jandan.net/*
// @grant        none
// @github       https://github.com/slowargo/JandanTucao
// ==/UserScript==
(function() {
    var myElement = document.querySelectorAll("span.time");
    for (var i = 0; i < myElement.length; i++) {
        //console.log("i:" + i + " ? " + myElement[i]);
        myElement[i].addEventListener("click", function() {
            function wait_util(fn, condition, interval) {
                interval = interval || 100;
                return function() {
                    var timer = setInterval(function() {
                        var check;
                        try {
                            check = !!(condition());
                        } catch (e) {
                            check = false;
                        }
                        if (check) {
                            clearInterval(timer);
                            delete timer;
                            fn();
                        }
                    }, interval);
                };
            }
            var link = $(this).find('a');
            if (link.length > 0) {
                var comment_id = $(link).find('span.ds-thread-count').attr('data-thread-key');
                var comment_container = $('#comment-box-' + comment_id);
                var sub_div = comment_container.find('div');
                var retry = 3;
                if (sub_div.length == 0) {
                    console.log("div not found");
                    return;
                }
                var res = $(sub_div[0]).html();
                //似乎不保证在<a>的click前执行?为避免错误重置,依然加上<div id="ds-waiting"></div>的判断
                //但假如多说返回超时,这里就不会强制重试了
                if (res.length > 0 && res.length < 30 && res != '<div id="ds-waiting"></div>') {
                    //if ($(sub_div[0]).html() == '评论框出错啦(990015): 服务异常,请联系客服人员' || $(sub_div[0]).html() =='<div id="ds-waiting"></div>' ) {
                    //重置状态,强制多说脚本重新向服务器请求
                    console.log(res + " reset...");
                    $(sub_div[0]).html('');
                    $(sub_div[0]).data("initialized", 0);
                }
                wait_util(function() {}, function() {
                    var res = $(sub_div[0]).html();
                    if (res == '<div id="ds-waiting"></div>') {
                        //如果这里放过了,很可能加载完成后多说返回990015,评论区就直接显示990015了
                        return false;
                    }
                    if (retry-- > 0 && res.length < 30) {
                        console.log(res + " retry: " + retry);
                        //重新加载评论框
                        $(sub_div[0]).html('');
                        $(sub_div[0]).data("initialized", 0);
                        DUOSHUO.EmbedThread(sub_div[0]);
                        return false;
                    }
                    return true;
                }, 200)();
            }
        });
    }
})();