日期:2014-05-16  浏览次数:20382 次

紧急求助:如何给window增加一个子对象????
我看到别人实现了以下的js代码:

function getWindow()
{
var w=window;
if(w.document.body.tagName.toLowerCase()=="body")
{
return w;
}
if(w.document.getElementsByTagName("frameset").length>0)
{
w=getLargestFrame(w.frames);
}
return w;
}

var w=getWindow(),d=w.document;
if(w.diigolet&&w.diigolet.loaded)
{
w.diigolet.show();
}else
{
w.$d=0;
  ...............
}

在上面的代码中:w.diigolet从形式上看是window的一个子对象,可是实际上window并没有这个子对象,
请问:diigolet 是怎么添加成为window的子对象的???

//-----------------------------------
我想实现这样的功能:有一段js代码,当浏览器打开一个网页时,通过点击插件把这段代码插入当前网页,那么如果我多次点击插件时,如何保证只在当前的网页上面代码只插入一次????
上面的那段代码是通过在window的子对象来实现的,是否还有其他的方法???




------解决方案--------------------
<script>
var diigolet={'loaded':false};
</script>
------解决方案--------------------
这段代码应该是用在 有框架的页面上 
var w=getWindow() 这句执行后 w 就代表了页面的所有frames的集合 
w.diigolet 表示页面上的一个 iframe ,代码里面是没有创建它的,应该是已经存在页面上的 
如 <iframe id="diigolet" name="diigolet"> </iframe> 

点击插件插入js代码时,可做个标志,如 将一个隐藏域的值设为 1,表示已经插入代码 
再次点击插件后,先判断这个值,从而可以继续你的操作

楼主在ajax版不是已经有这个贴了~~
------解决方案--------------------
实际上他不是window的子对象,这个应该是判断frameset的
------解决方案--------------------
增加一个属性,直接赋值即可 
不过要用window.prototype
window.prototype.attr=你想要的属性

------解决方案--------------------
window子对象很泛啊,基本上自己写的代码都是当前window的子对象(包括JS与HTML)。

你访问父window的函数,parent.functionName 这就是父窗口的子对象。

宿主的东西估计动不了。