帮我解释一下下面这段javascript代码,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/16 14:55:55
function MM_findObj(n, d) { //v4.01
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

// 似乎是从网页上采集对象的, n,d有具体的参数例子就好看多了
function MM_findObj(n, d) { /*n 是类似于"xxxxx?xxxxx"的参数串, d 是DOM对象,可能是某个网页的DOM */
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) { /* 如果n中有问号且浏览器缓存中存在frame对象*/
d=parent.frames[n.substring(p+1)].document; /* n.substring(p+1) = ?号后段字串*/
n=n.substring(0,p); /* n.substring(0,p) = ?号前段字串*/
}
/* 此时的d是个DOM对象, n 均有可能是要取的对象的 name , id 或是索引值*/
if(!(x=d[n])&&d.all) x=d.all[n]; /* IE等浏览器下取得对象给x ,FF不支持all会跳过*/
for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; /* 上面取不到时用这个方法取,大多数浏览支持这个语法 */
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); /* NS浏览器下 */
if(!x && d.getElementById) x=d.getElementById(n); /* 以上浏览都器取不到x时,用这句, FF和大都浏览器是支持的 */
return x; /* 取到x并返回 */
}