It's Not Important

At least part of the world will became less important now.

目前為 2016-02-15 提交的版本,檢視 最新版本

// ==UserScript==
// @name         It's Not Important
// @namespace    lainscripts_it_is_not_important
// @version      1.2
// @description  At least part of the world will became less important now.
// @author       lainverse
// @match        *://*/*
// @grant        none
// @run-at       document-start
// ==/UserScript==
/* jshint esnext: true */

(function(){
    'use strict';

    var imptt = /((display|(margin|padding)(-top|-bottom)?):[^;!]*)!\s*important/ig;

    function unimportanter(el) {
        var si = el.getAttribute('style'), so = si.replace(imptt, function(str,grp){return grp;});
        el.setAttribute('style',so);
        return (si != so)?1:0;
    }

    function logger(c) {
        if (c) console.log(`Decreased importance of ${c} element${c>1?'s':''}`);
    }

    document.addEventListener ("DOMContentLoaded", function(){
        var c = 0, imp = document.querySelectorAll('[style*="!"]'), i = imp.length;
        while(i--)
            c+= unimportanter(imp[i]);
        logger(c);
    });

    function checkTarget(m, c) {
        if (m.style && m.style.cssText.indexOf('!') > -1)
            c+=unimportanter(m);
        return c;            
    }

    function checkNodes(m, c) {
        var i = m.length;
        while(i--)
            c = checkTarget(m[i], c);
        return c;            
    }

    var observer = new MutationObserver(function(mutations) {
        setTimeout(function(m) {
            var i = m.length, c = 0;
            while(i--) {
                if (m[i].target)
                    c = checkTarget(m[i].target, c);
                if (m[i].addedNodes.length)
                    c = checkNodes(m[i].addedNodes, c);
            }
            logger(c);
        },0,mutations);
    });

    observer.observe(document, { childList : true, attributes : true, attributeFilter : ['style'], subtree : true });
})();