Home

Show Obscure Image Links

Source code for bookmarklet Show Obscure Image Links.



javascript:
(function(){
    
    function cE(a)
    {
        var a2 = [];
        for (var k = 0; k < a.length; ++k) {
            a2.push(a[k]);
            }
        return a2;
    }
    function linktextCB2(node, ifun, ldata)
    {
        function ns(nxi)
        {
            var str = "";

            var nx = nxi;
            while (nx != null)
            {
                if (nx.tagName == "IMG")
                {
                    if ( ifun != null )
                    {
                        str += ifun(nx);
                    }
                    else
                    {
                        str += (nx.hasAttribute("ALT") ? nx.alt : nx.src);
                    }
                }
                else if (nx.data != null
                    && nx.nodeType != 8 // COMMENT_NODE
                    && nx.parentNode.tagName != "SCRIPT")
                {
                    str += nx.data;
                    if (ldata != null) {ldata.length += nx.data;}
                }
                str += ns(nx.firstChild);
                nx = nx.nextSibling;
            }
            return str;
        }

        if (node.href == null || node.href.length == 0) {return null;}
        var nx = ns(node.firstChild);
        return nx.replace( /\s+/mg, " ").replace( /^\s/, "" ).replace( /\s+$/, "" );
    }

    function hasAttribute(e, a)
    {
        return e.hasAttribute(a);
    }
    var rp = 0;


    var pure_count = 0;

    function eE(node, ldata) {
        var altless_count = 0;
        ifun = function(img){
            var ha = hasAttribute(img, "ALT");
            altless_count += (!ha ? 1 : 0);
            return (ha ? img.alt : "[" + img.src + "]");
            };
        var lt = linktextCB2(node, ifun, ldata);
        return (altless_count > 0) ? lt : null;
    }
    function eD(dt) {
        var c = cE( dt.getElementsByTagName( "A" ) );
        for (var k = 0; k < c.length; ++k) {
            var l = c[k];
            var ldata = { length:0 };
            var lt = eE(l, ldata);
            if ( lt != null ) {
                if (ldata.length == 0)
                {
                    ++pure_count;
                }
                n = l.cloneNode( false );
                n.appendChild(
                    dt.createTextNode(++rp + ": " + lt)
                    );
                l.parentNode.replaceChild( n, l );
            }
        }
    }


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

    // "dI" == "documentIterator"
    function dI_(dt, f) {
        if (dt == null) {return;}
        eD(dt, f);
        ifs_( dt.getElementsByTagName("FRAME") );
        ifs_( dt.getElementsByTagName("IFRAME") );
    }

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

        var st = "Obscure image links: " + rp;
        if ( rp > 0 )
        {
            st += ". (Pure: " + pure_count;
            st += ", mixed with text: " + (rp - pure_count)
                + ")";

        }

        alert(st + ".");
})();