Greasy Fork

Greasy Fork is available in English.

蓝奏云网盘增强

自动显示更多文件(文件夹末尾按钮)

当前为 2020-12-27 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         蓝奏云网盘增强
// @version      1.0.1
// @author       X.I.U
// @description  自动显示更多文件(文件夹末尾按钮)
// @match        https://www.lanzou.com/account.php
// @match        https://up.woozooo.com/mydisk.php*
// @icon         https://www.lanzou.com/favicon.ico
// @grant        GM_xmlhttpRequest
// @grant        GM_registerMenuCommand
// @grant        GM_openInTab
// @noframes
// @license      GPL-3.0 License
// @run-at       document-end
// @namespace    https://github.com/XIU2/UserScript
// ==/UserScript==

(function() {
    // 如果位于 [https://www.lanzou.com/account.php] 网页,则跳转至 iframe 指向的 [https://up.woozooo.com/mydisk.php] 网页
    // 用来解决 iframe 跨域无法操作的问题,其实 [https://up.woozooo.com/mydisk.php] 还套了一个 iframe,但已经是同域可以操作了,没必要再跳转了
    if(window.top.location.href === "https://www.lanzou.com/account.php"){
        window.top.location.href = "https://up.woozooo.com/mydisk.php"
    }

    // 注册脚本菜单
    GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});


    // 获取 iframe 框架
    var mainframe,
        patt_mydisk=/mydisk\.php\?/;
    if(patt_mydisk.test(window.top.location.href)){
        mainframe = window; // 如果当前位于最后一个套娃 iframe 本身,则不再需要寻找 iframe 框架,暂时没什么用,但是以后如果要增加其他功能可能用得上
        EventXMLHttpRequest(); // 监听 XMLHttpRequest 事件并执行 [自动显示更多文件]
    }else{
        mainframe = document.getElementById("mainframe");
        if(mainframe){ // 只有找到 iframe 框架时才会继续运行脚本
            mainframe = mainframe.contentWindow;
            EventXMLHttpRequest(); // 监听 XMLHttpRequest 事件并执行 [自动显示更多文件]
        }
    }


    // 自动显示更多文件
    function fileMore() {
        var filemore = mainframe.document.getElementById("filemore");
        if(filemore && filemore.style.display != "none"){
            if(filemore.children[0]){
                filemore.children[0].click();
            }
        }
    }


    // 定时执行(旧方法,每隔 100ms 执行一次,比较笨且浪费一丢丢性能,但优点是不会漏掉且反应更快)
    //setInterval(fileMore,100);


    // 监听 XMLHttpRequest 事件并执行(新方法,只有在产生事件时才会执行 [自动显示更多文件],平时不会执行,更优雅~)
    function EventXMLHttpRequest() {
        var _send = mainframe.XMLHttpRequest.prototype.send
        function sendReplacement(data) {
            setTimeout(fileMore, 200); // 延迟执行,避免网页还没加载完
            return _send.apply(this, arguments);
        }
        mainframe.XMLHttpRequest.prototype.send = sendReplacement;
    }
})();