Greasy Fork

Greasy Fork is available in English.

QQ空间自动删除说说

一键删除QQ空间所有说说

当前为 2019-07-14 提交的版本,查看 最新版本

// ==UserScript==
// @name         QQ空间自动删除说说
// @description  一键删除QQ空间所有说说
// @namespace    http://greasyfork.icu/users/197529
// @version      0.7.7
// @author       kkocdko
// @license      Unlicense
// @include      *://user.qzone.qq.com/*
// @noframes
// ==/UserScript==

let FloatButton = initFloatButton();

new FloatButton('删除所有说说', async function() {
    this.loop = !this.loop;
    let appIframe = document.querySelector('.app_canvas_frame');
    if (!appIframe){
        let switchToTag = confirm('未切换到“说说”标签,是否立即切换?');
        if (switchToTag){
            document.querySelector('.head-nav-menu>.menu_item_311>a').click();
        } else {
            return;
        }
    }
    let iframeDocument = appIframe.contentWindow.document;
    while (this.loop) {
        clickAllEl('.del_btn', iframeDocument);
        await sleepAsync(2000);
        clickAllEl('.qz_dialog_layer_sub');
        await sleepAsync(1500);
        nextPage();
        await sleepAsync(2000);
    }

    function nextPage() {
        iframeDocument.querySelector('.mod_pagenav_main>a').forEach(el => {
            if (el.innerText == '下一页') el.click();
        });
    }
});

function clickAllEl(selector, parentNode = document) {
    parentNode.querySelectorAll(selector).forEach(el => el.click());
}

async function sleepAsync(time) {
    return new Promise(resolve => setTimeout(resolve, time));
}

function initFloatButton() {
    let FloatButton = document.FloatButton = document.FloatButton || (() => {
        let buttonBarShadow = document.createElement('div').attachShadow({ mode: 'open' });;
        buttonBarShadow.innerHTML = '<style>:host{position:fixed;top:3px;left:3px;z-index:9999999999;height:0}input~*{float:left;margin:3px;padding:1em;outline:0;border:0;border-radius:4px;background:#2196f3;box-shadow:0 1px 3px 0 #00000022;color:#fff;font-size:14px;line-height:0;transition:.3s}:active{background:#63b5f7;box-shadow:0 2px 5px 0 #00000033}button:active{transition:0s}label{border-radius:50%}input{display:none}input:checked~button{visibility:hidden;opacity:0;transform:translateY(-3em)}input:checked~label{opacity:.3;transform:translateY(3em)}</style><input id=hidebtns type=checkbox><label for=hidebtns></label>';
        document.body.append(buttonBarShadow.host);
        return function(text, onclick) {
            let button = document.createElement('button');
            button.innerText = text;
            button.addEventListener('click', onclick);
            buttonBarShadow.append(button);
            return button;
        };
    })();
    return FloatButton;
}