如何便励当前页面中的所有FRAME(包括IFRAME和FRAMESET)

需求:

最近在做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();
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值