Source code for bookmarklet Show Frames.
javascript:
(function(){
function cE(a)
{
var a2 = [];
for (var k = 0; k < a.length; ++k) {
a2.push(a[k]);
}
return a2;
}
var g_frame_count = 0;
var iframe_count = 0;
function eD(dt, f) {
if (f != null) {
++g_frame_count;
var bod = dt.getElementsByTagName("BODY")[0];
if (bod != null)
{
bod.style.border = "thin dashed red";
bod.title = "Frame " + g_frame_count + ": " + (f.name || f.src);
}
}
var ifrs = cE( dt.getElementsByTagName("IFRAME") );
iframe_count += ifrs.length;
for (var k = ifrs.length, i = 0; i < k; ++i )
{
var ifr = ifrs[i];
ifr.style.border = "thin dashed blue";
ifr.title = "Iframe " + (ifr.name || ifr.src);
}
}
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 = "";
if (g_frame_count == 0 && iframe_count == 0)
{
st = "No frames";
}
else
{
st += "Frames: " + g_frame_count;
st += ". | IFRAME: " + iframe_count;
}
alert(st + ".");
})();