我需要使用jQuery 1.6.2为现有的jsp页面创建一个请等待页面。我能够让div叠加工作,以及在页面中心的模态窗口中请等待动画。但是,叠加层仅覆盖其中一个框架集,即中心框架集。
html结构基本上是这样的(为了清晰起见,我为此付出了很多努力):
...
<frameset >
<frame id="topMostFrame">
<frameset>
<frame id="leftMostframe">
<frame id="centerMostFrame">
</frameset>
</frameset>
<noframes>
</noframes>
</body>
</html>
JQUERY
function getTheOverlay(){
$(document).ready(function() {
$("#loading-div-background").css({opacity: 0.5});
$("#loading-div-background").show();
//alert("In getOverlay!");
});
}
function remove(){
$(document).ready(function() {
$('#loading-div-background').hide();
});
}
HTML
<div id="loading-div-background" style="display:none" class="ui-widget">
<div id="loading-div" class="ui-corner-all">
<img style="height:80px;margin:50px;" src="/images/loading.gif" alt="Loading.."/>
</div>
</div>
CSS
#loading-div-background {
display:none;
position:absolute;
top:0;
left:0;
background:gray;
width:100%;
height:100%;
/* Next 2 lines IE8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=70);
}
#loading-div {
width: 300px;
height: 200px;
background-color: #ffffff;
text-align:center;
position:absolute;
left: 50%;
top: 50%;
margin-left:-150px;
margin-top: -100px;
}
我尝试将html移动到我的jquery函数中加载,但它没有在IE8中显示叠加层。我也有时间让IE8使用叠加层本身,但是使用上面的CSS修复了这个问题。
我需要禁用左框架上的链接,这可能是我将要使用的方法,或者用覆盖层覆盖它们。是的我知道帧很糟糕,但这就是我的工作原理。
我无法覆盖其他框架集并覆盖整个页面。我已经读到这对框架集是不可能的,尽管我猜测可能有一个解决方法。但是,当我使用警报进行调试时,覆盖覆盖整个页面。
我的问题是:为什么使用警报使覆盖层覆盖所有内容?即使使用框架集,我还能做些什么才能获得相同的效果吗?
答案 0 :(得分:4)
我遇到了同样的问题,这是我发现对我有用的问题。
框架基本上是一个窗口对象。关于Windows的所有规则都适用于框架。 div属于窗口内的文档。由于文档不能离开其窗口,div不能离开它的窗口。您要求在浏览器级别进行控制,但您所允许的只是在文档级别进行控制。
但是,您可以对 iframe 进行DIV,而不是框架集。
<强>更新强>
以我的朋友为例,我花了一些时间来解决它,但实际上,StackOverflow对我帮助很大,所以我觉得我必须把这个例子放在这里帮助别人。
这是页面容器的html,它包含一个iframe,它将请求您要覆盖的页面框架集。
<head>
<style type="text/css">
html, body#mybcontainer_body{margin:0px;padding:0px;border:none;height:100%;width:100%;}
#mybcontainer_div{position:absolute;top:0px;bottom:0px;left:0px;right:0px;}
#mybcontainer_iframe{position:absolute;top:0%;left:0%;height:100%;width:100%;}
</style>
</head>
<body id="mybcontainer_body" >
<div id="mybcontainer_dialog" style="display:none;">Some Text Here</div>
<div id="mybcontainer_div"><iframe id="mybcontainer_iframe" border="0" frameborder="0" scrolling="no" noresize="noresize" src="page-two-contain-frameset"></iframe></div>
</body>
我的问候
答案 1 :(得分:0)
在开罗解决方案解释后,我最终在框架集上使用了show / hide。这确实有效,但我不相信可以用一个div来覆盖多个框架集。
这是我使用的代码:
$('#divName a',top.frames['leftframe'].document).show();
$('#divName a',top.frames['leftframe'].document).hide();
然后我只使用我创建的div作为主框架集中的叠加层与此一起工作,这解决了问题。