帮我解释JavaScript中的函数MM_findObj

来源:百度知道 编辑:UC知道 时间:2024/06/20 05:56:20
<SCRIPT LANGUAGE="JavaScript">
<!--
// 自动 COPY 代码开始
function MM_findObj(n, d) { //v4.0
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 && document.getElementById)
x=document.getElementById(n);
return x;
}
function JM_cc(ob){
var obj=MM_findObj(ob);
if (obj) {
obj.select();js=obj.createTextRange();js.execCommand("Copy");
}
alert("已经复制成功,你可以发送给你朋友了!");
}

// 自动 COPY 代码结束
document.write('<center><input name="page_url" alt="这首歌曲的网址" v

MM_findObj函数主要作用:取得要复制的对象,并返回
1. if(!d) d=document;:
首先MM_findObj(n, d),有两个参数,而在两处用时,一处传了两个参数MM_findObj(n,d.layers[i].document),一处传了一个参数MM_findObj(ob)所以第一个if(!d) d=document;判断是否传了第二个参数d,如果没传第二个参数d,则!d为true,为d赋值文文件对象document
2. if((p=n.indexOf("?"))>0&&parent.frames.length)
用indexOf查找函数MM_findObj(n, d)的第一个参数n中?的位置(找不到?值为-1,找到?值为相应的位置),并赋给变量p,并判断这个位置是否大于0, parent.frames.length:父框架个数是否大于0
3. if(!(x=d[n])&&d.all) x=d.all[n];
为变量x赋值d[n],如果不存在d[n]对象,且d.all存在,则为x赋值d.all[n]
4. for (i=0;!x&&i<d.forms.length;i++) x= d.forms[i][n];
d.forms.length:所传参数d对象的窗口个数,循环判断为x赋的值不存在时!x为真,且i< d.forms.length时,重新为x赋值d.forms[i][n]
5. for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
d.layers.length: 所传参数d对象的层个数,循环判断为x赋的值不存在时!x为真,且i< d.forms.length时,重新为x赋值递归调用自身函数MM_findObj的返回值
6. if(!x && document.getElementById) x= document.getElementById(n);
document.getElementById: 所传参数d对象的对象id, 判断为x赋的值不存在