如何便励当前页面中的所有FRAME(包括IFRAME和FRAMESET)
2007-07-27 14:09
525 查看
需求:
最近在做WEB程序时,有个需求是模拟IE7.0的收藏夹,做一个弹出菜单,而在点开该弹出菜单后,单击页面中的任何一个地方,都会使该弹出菜单隐藏掉(弹出菜单是一个DIV层).
问题:
页面中可能包括框架页或IFRAME页.如何控制他们包含页面的单击事件.
解决方案:
便励页面中的所有的FRAME,并为其添加BODY的ONCLICK事件.
所添加的BODY的ONCLICK事件,要便励当前窗体的父窗体,直到最后一层.并激活该页面的隐藏弹出菜单的事件.
代码:
var clickEvent = function()...{InitRootBodyClick();};
//循环取出当前FRAME对象中包含的FRMAE,并为其包含的页面添加BODY的ONCLICK事件
function InitIFrameBodyClick(frameObj, clickEvent)
...{
if(frameObj!=undefined && frameObj.document.body != null)
...{
frameObj.document.body.onclick=clickEvent;
if(frameObj.frames.length > 0)
...{
var i;
for(i=0;i<frameObj.frames.length;i++)
...{
InitIFrameBodyClick(frameObj.frames[i], clickEvent);
}
}
}
}
//为指定的窗体对象找到其最顶级的父窗体对象,并激活该父窗体的BODY的ONCLICK事件
function InitRootBodyClick(frameObj)
...{
if(frameObj == undefined)
...{
InitRootBodyClick(window.parent);
}
else if(frameObj.document.parentWindow != frameObj.document.parentWindow.parent)
...{
InitRootBodyClick(frameObj.document.parentWindow.parent);
}
else
...{
frameObj.document.body.click();
}
}
后来发现第二个方法可以直接用下面代码代替,因为在初始化各个页面的ONCLICK事件时,是在浮动菜单页面发生的,因此该window对象即为该页面的window对象,作为变量存储在各页面的ONCLICK事件中.
function InitRootBodyClick()
...{
window.document.body.click();
}
最近在做WEB程序时,有个需求是模拟IE7.0的收藏夹,做一个弹出菜单,而在点开该弹出菜单后,单击页面中的任何一个地方,都会使该弹出菜单隐藏掉(弹出菜单是一个DIV层).
问题:
页面中可能包括框架页或IFRAME页.如何控制他们包含页面的单击事件.
解决方案:
便励页面中的所有的FRAME,并为其添加BODY的ONCLICK事件.
所添加的BODY的ONCLICK事件,要便励当前窗体的父窗体,直到最后一层.并激活该页面的隐藏弹出菜单的事件.
代码:
var clickEvent = function()...{InitRootBodyClick();};
//循环取出当前FRAME对象中包含的FRMAE,并为其包含的页面添加BODY的ONCLICK事件
function InitIFrameBodyClick(frameObj, clickEvent)
...{
if(frameObj!=undefined && frameObj.document.body != null)
...{
frameObj.document.body.onclick=clickEvent;
if(frameObj.frames.length > 0)
...{
var i;
for(i=0;i<frameObj.frames.length;i++)
...{
InitIFrameBodyClick(frameObj.frames[i], clickEvent);
}
}
}
}
//为指定的窗体对象找到其最顶级的父窗体对象,并激活该父窗体的BODY的ONCLICK事件
function InitRootBodyClick(frameObj)
...{
if(frameObj == undefined)
...{
InitRootBodyClick(window.parent);
}
else if(frameObj.document.parentWindow != frameObj.document.parentWindow.parent)
...{
InitRootBodyClick(frameObj.document.parentWindow.parent);
}
else
...{
frameObj.document.body.click();
}
}
后来发现第二个方法可以直接用下面代码代替,因为在初始化各个页面的ONCLICK事件时,是在浮动菜单页面发生的,因此该window对象即为该页面的window对象,作为变量存储在各页面的ONCLICK事件中.
function InitRootBodyClick()
...{
window.document.body.click();
}
相关文章推荐
- 在frameset,frame,iframe中如何操作其他框架中的页面以及如何刷新框架中的页面
- frameset标签、frame标签、iframe标签实现页面部局
- 有关一个 iframe 的问题,关于在 iframe 内的页面内登录成功后,如何由当前页直接转到另一个页面内?
- 获取IE (控件)的所有链接(包括Frameset, iframe)
- 获取IE (控件)的所有链接(包括Frameset, iframe)
- frameset, iframe, frame框架页面出现横向滚动条bug的隐藏方法
- frameset, iframe, frame框架页面出现横向滚动条bug的隐藏方法
- frameset, iframe, frame框架页面出现横向滚动条bug的隐藏方法
- 获取IE (控件)的所有链接(包括Frameset, iframe)
- js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
- frameset, iframe, frame框架页面在IE6中出现横向滚动条bug的隐藏方法
- frameset, iframe, frame框架页面出现横向滚动条bug的隐藏方法
- frameset, iframe, frame框架页面出现横向滚动条bug的隐藏方法
- 获取IE (控件)的所有链接(包括Frameset, iframe)
- 获取IE (控件)的所有链接(包括Frameset, iframe)
- frameset里的frame及页面里iframe的src操作
- 获取IE (控件)的所有链接(包括Frameset, iframe)zz
- frameset, iframe, frame框架页面出现横向滚动条bug的隐藏方法
- PHP 如何得到当前页面中所有已定义的变量和常量