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 + ".");
})();