`
打倒小日本
  • 浏览: 48107 次
  • 性别: Icon_minigender_1
  • 来自: 辽宁
社区版块
存档分类
最新评论

与<rich:modalPanel />的战斗

    博客分类:
  • JSF
阅读更多
发自肺腑的说<rich:modalPanel />真是一个不错的弹出层控件
拖动、定位、自动适应大小、手动改变大小 我的需求他都能一一满足

但有些地方也有点人性化过头了 不够灵活
弹出层总是固定(position: fixed)在某个位置上
换句话说 拉动滚动条 弹出层不会跟着上下移动

一般情况下当然没问题 这样也挺好
但当弹出层的高度 > 浏览器的高度后 问题就来了
由于是固定位置 所以超出浏览器的部分就怎么也看不到了
也许控件的作者认为弹出层的内容一定都很短小吧

查看了N遍API 也没发现可以关闭这个"特性"的方法
正规方法的不行 那只能来"硬"的了
过程省略...直接看解决方案吧

IE6以外的浏览器解决方案很简单 只要设置一段CSS样式即可
.rich-mpnl_panel {
    position: absolute;
}


IE6还不行 需要多费些事
查看源代码得知由于IE6不支持position: fixed
所以弹出层固定位置 是使用IE专有的CSS表达式来实现的
具体代码为 modalPanel.js 580行左右
var leftExpr = "(this.mpLeft || 0) + -Position.cumulativeOffset(this.parentNode)[0] + getSizeElement().scrollLeft + \"px\"";
var topExpr = "(this.mpTop || 0) + -Position.cumulativeOffset(this.parentNode)[1] + getSizeElement().scrollTop + \"px\"";
	
eCdiv.style.setExpression("left", leftExpr);
eCdiv.style.setExpression("top", topExpr);

由于不想修改控件代码(这样会对以后的升级照成麻烦)
所以只能动态的删除针对top的CSS表达式
代码如下
function removeModalPanelTopFixedForIE6(obj)
{
    //IE6
    if(jQuery.browser.msie && jQuery.browser.version < 7)
    {
        //ID
        var id = obj.id.substring(0, obj.id.indexOf("Container"));
        //去除针对IE6高度top的css表达式
        jQuery(obj).find("#" + id + "CDiv")[0].style.removeExpression("top");
    }
}

然后需要修正这个问题时这样调用
<rich:modalPanel onshow="removeModalPanelTopFixedForIE6(this)">
    ......
</rich:modalPanel>

完毕...
分享到:
评论
6 楼 xiaojianbo 2012-02-17  
5 楼 ye无痕 2010-12-29  
本本好棒
4 楼 打倒小日本 2010-12-04  
依舟cxj 写道
呵呵……在这儿碰到本本你了

呵呵 巧了
欢迎光临 虽说N就没更新过博客了
3 楼 依舟cxj 2010-11-26  
呵呵……在这儿碰到本本你了
2 楼 打倒小日本 2010-08-19  
这段CSS对IE8也是生效的 我们之前一直在用

不过后来由于一些原因 放弃使用modalPanel了
改用Jquery UI的Dialog控件了
1 楼 haokaidehao 2010-08-19  
你好,我想问一下,我用的是IE8, 采用你上面说的针对IE7的CSS,为什么没预期的效果。我弹出的ModalPanel比较大,页面显示不全。你的那个CSS可以解决吗?谢谢。

相关推荐

    标签使用

    private List&lt;ToolBarItem&gt; freeItems = new ArrayList&lt;&gt;(); // 构造函数,初始化ToolBarItem public ToolBar() { // 初始化items和freeItems } public String do1() { System.out.println(items); System...

    用richFaces的<rich:treeNode>标签开发tree

    在实际应用中,`&lt;rich:tree&gt;`组件还可以与其他RichFaces组件结合,比如`&lt;rich:contextMenu&gt;`,为树节点提供右键菜单,增强用户体验。同时,通过CSS和JavaScript,可以进一步定制组件的样式和交互行为。 总的来说,`...

    richfaces中的datagrid显示数据

    &lt;rich:columnGroup&gt; &lt;h:column&gt; &lt;h:outputText styleClass="headerText" value="Name"/&gt; &lt;/h:column&gt; ... &lt;/rich:columnGroup&gt; &lt;/f:facet&gt; ``` 这里使用了`&lt;h:outputText&gt;`标签来显示表头文本,通过`style...

    rich:message使用方法

    `&lt;a4j:support&gt;`监听`onkeyup`事件,当用户在`h:inputText`中输入时,会触发`reRender="order"`,使`&lt;rich:message&gt;`组件和`&lt;h:outputText&gt;`组件更新,显示当前输入的验证状态。 6. **处理用户输入** `&lt;a4j:...

    Richfaces组件使用指南

    &lt;rich:panel header="Simple echo"&gt; &lt;h:inputText size="50" value="#{panelBean.text}"&gt; &lt;!-- 添加Richfaces的Ajax行为 --&gt; &lt;a4j:support event="onblur" reRender="output" /&gt; &lt;/h:inputText&gt; &lt;h:outputText...

    richfaces标签学习笔记.doc

    `&lt;rich:componentControl&gt;`标签与`&lt;h:graphicImage&gt;`一起使用,配置了操作"hide",表示在用户点击图片时调用hide操作隐藏面板。`for`属性指定了要控制的组件(这里是"panel"),`attachTo`属性则指定了触发操作的...

    Richfaces标签

    &lt;rich:modalPanel id="panel" width="350" height="100"&gt; &lt;f:facet name="header"&gt; &lt;h:panelGroup&gt; &lt;h:outputText value="Modal Panel"&gt;&lt;/h:outputText&gt; &lt;/h:panelGroup&gt; &lt;/f:facet&gt; &lt;f:facet name="controls...

    richface标签.doc

    &lt;rich:modalPanel id="panel" width="350" height="100"&gt; &lt;f:facet name="header"&gt; &lt;h:panelGroup&gt; &lt;h:outputText value="Modal Panel"&gt;&lt;/h:outputText&gt; &lt;/h:panelGroup&gt; &lt;/f:facet&gt; &lt;f:facet name="controls...

    Usage of A4J.Usage of A4J.Usage of A4J.

    `&lt;rich:modalPanel&gt;`是RichFaces中的一个弹出对话框组件,可以在页面上显示一个模态窗口,通常用于展示信息、确认操作或收集用户输入。用户可以设置其大小、位置、关闭按钮以及其他交互特性。 4. **&lt;rich:...

    Richfaces组件使用指南.doc

    &lt;rich:panel header="Simple echo"&gt; &lt;h:inputText size="50" value="#{panelBean.text}"&gt; &lt;a4j:support event="onkeyup" reRender="output" /&gt; &lt;/h:inputText&gt; &lt;h:outputText id="output" value="#{panelBean....

    Richfaces 常用组件使用手册中文版

    在Rich组件部分,手册介绍了更复杂的UI组件,如&lt;rich:ajaxValidator&gt;用于表单验证,&lt;rich:column&gt;和&lt;rich:columnGroup&gt;用于数据展示,&lt;rich:dataTable&gt;、&lt;rich:extendedDataTable&gt;以及&lt;rich:scrollableDataTable&gt;...

    richfaces组件说明文档及使用实例

    例如,`&lt;rich:calendar&gt;`用于日期选择,`&lt;rich:slider&gt;`用于创建滑动条,`&lt;rich:modalPanel&gt;`则用于创建模态对话框。 2. **Ajax支持**: RichFaces的强项之一是其内置的Ajax功能。它使用A4J(Ajax for JSF)库,...

    Richfaces 4 组件参考手册

    - **Parameters and JavaScript**:说明如何通过参数和JavaScript来配置 `&lt;rich:componentControl&gt;`。 - **Timing**:讨论 `&lt;rich:componentControl&gt;` 的时间控制选项。 - **Referencedata**:给出具体示例和参考...

    FLex连接数据

    &lt;s:Label x="36" y="36" color="maroon" fontSize="20" fontWeight="bold" text="XYZ Corporation Directory"/&gt; &lt;s:Button id="empBtn" x="36" y="85" label="Employees"/&gt; &lt;s:Button id="deptBtn" x="124" y="85...

    Android代码-Android-YRichEditor

    &lt;p&gt;段落3&lt;b&gt;加粗加粗加粗&lt;br&gt;加粗加粗加粗&lt;/b&gt;&lt;/p&gt; More 详细使用请查看示例,有关原理可以查看Android原生简易图文编辑器 Thanks: XRichText: https://github.com/sendtion/XRichText cwac-richedit: ...

    richfaces-ui-3.2.0.GA-bin.part2.rar

    element(Id), rich:component(Id) &lt;br&gt;&lt;br&gt;RichFaces 3.2需要JSF 1.2和JDK 5.0以上版本 &lt;br&gt;&lt;br&gt;*******&lt;br&gt;这个上传文件是3.2.0 GA的组件库的分卷2&lt;br&gt;文件名:richfaces-ui-3.2.0.GA-bin.part2.rar&lt;br&gt;分卷1地址:...

    my test just a test

    &lt;mx:HBox id="inputFlight" height="100%" width="100%" verticalAlign="top" paddingLeft="10" paddingTop="10" paddingRight="10"&gt; &lt;base:HLabel text="Flow" /&gt; &lt;base:HText text="E" /&gt; &lt;mx:Spacer ...

    Richfaces的DateTable

    &lt;rich:datatable id="myTable" value="#{bean.dataList}" var="item"&gt; &lt;rich:column&gt; &lt;f:facet name="header"&gt; &lt;h:outputText value="日期" /&gt; &lt;/f:facet&gt; &lt;h:outputText value="#{item.date}" /&gt; &lt;/rich:...

    一个很好的vim配置(可鼠标操作,有目录,自动补全)

    map &lt;F1&gt; :wqall&lt;CR&gt; //&lt;F1&gt;保存全部并退出 ,如果这些键有冲突,就进.vimrc来改吧 map &lt;F2&gt; :NERDTreeToggle&lt;CR&gt; //&lt;F2&gt;打开/关闭目录树边框(左) map &lt;F3&gt; :NERDTreeMirror&lt;CR&gt; //&lt;F3&gt;目录树镜像 map &lt;F4&gt; :wall&lt;CR...

    highcharts在richfaces下的实现

    在这个例子中,我们首先在`&lt;h:head&gt;`中引入了`myhc.js`,然后在`&lt;h:body&gt;`中创建了一个`&lt;rich:panel&gt;`,用于承载图表。`&lt;a4j:outputPanel&gt;`是富Faces的异步更新组件,它允许我们在不刷新整个页面的情况下更新其内容...

Global site tag (gtag.js) - Google Analytics