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);
}
}
// "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 = "";
if (g_frame_count == 0 && iframe_count == 0)
{
st = "No frames";
}
else
{
st += "Frames: " + g_frame_count;
st += ". | IFRAME: " + iframe_count;
}
alert(st + ".");
}());