日期:2014-05-16 浏览次数:20402 次
说明
用途: 查询当前页面以及所包含的frame中id为传入的参数的对象,如本身页面为frame,还可查询上级页面中id为传入参数的对象。
参数:可传入对象id,以及对象本身
返回:返回所传id的对象
?
用法:如查询id为javaeye的对象
?
var xx = $$('javaeye');
?
方法原码如下:
?
function $$(id){
if(typeof id == 'string'){
var obj = document.getElementById(id);
if(obj)return obj;
var p = window;
//先搜索自己的子frame
var fs = [];
for(var k=0; k<p.frames.length; ++k){
fs.push(p.frames[k]);
}
for(var i=0; i<fs.length; ++i){
try{
obj = fs[i].document.getElementById(id);
}catch(e){
obj = null;
}
if(obj)return obj;
for(var k=0; k<fs[i].frames.length; ++k){
fs.push(fs[i].frames[k]);
}
}
//找到最高层window
while(p.parent != p){
p = p.parent;
}
obj = p.document.getElementById(id);
if(obj)return obj;
//frames
var fs = [];
for(var k=0; k<p.frames.length; ++k){
fs.push(p.frames[k]);
}
for(var i=0; i<fs.length; ++i){
try{
obj = fs[i].document.getElementById(id);
}catch(e){
obj = null;
}
if(obj)return obj;
for(var k=0; k<fs[i].frames.length; ++k){
fs.push(fs[i].frames[k]);
}
}
alert('can not get object for:' + id);
}else if(typeof id == 'object')
return id;
else
alert('can not get object for:' + id); //可写成记录日志方法,或其它处理
}
?
?
请高手赐教,以使更加完善!!
?