Home

Flex Tables

Source code for bookmarklet Flex Tables.



javascript:
(function(){
    
    function hasAttribute(e, a)
    {
        return e.hasAttribute(a);
    }

    var table_count = 0;
    var rc = 0;
    function rw(dt, el) {
        var fs = dt.getElementsByTagName( el );
        for (var i = 0, l = fs.length; i < l; ++i )
        {
            ++table_count;
            if ( hasAttribute(fs[i], "width") )
            {
                ++rc;
                fs[i].removeAttribute("width");
            }
        }
    }

    function eD(dt) {
        rw( dt, "TABLE" );
        rw( dt, "TD" );
    }


    // "dIr" == "documentIterator"
    function dIr(dt, f) {
        function ifsr( fs )
        {
            for (var i = 0; i < fs.length; ++i)
            {
                try {
                    dIr(fs[i].contentDocument, fs[i]); // recursive call
                }
                catch (e) {
                    alert(e || "Unspecified error");
                }
            }
        }

        if (dt == null) {return;}
        eD(dt, f);
        ifsr( dt.getElementsByTagName("FRAME") );
        ifsr( dt.getElementsByTagName("IFRAME") );
    }

    // iterate through all documents
    dIr(document, null);

    var st = (table_count > 0) ? ("Widths removed: " + rc) : "No tables";
    alert(st + ".");
}());