这是来自 jsf-ibm.jar(MANIFEST.MF 文件)的数据,以提供有关我当前正在处理的应用程序正在使用的 jsf 版本的信息:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.2
Created-By: IBM Corporation
Specification-Title: Java Server Faces
Implementation-Title: JSF Widget Library (JWL) - Base
Implementation-Version: JWL v3_1_13
Implementation-Vendor: IBM
Build-Version: 20120307.2306
Build-Date: March 7 2012
Copyright-Info: Copyright (c) 2003,2008, International Business Machin
es Corporation. All Rights Reserved.
我一直在追逐和解决这种奇怪的应用程序行为,这种行为只发生在 IE 中。
有链接,当点击它时,对话框应该打开(带有一些可以编辑和保存的数据的表格等)。但是当点击链接时,对话框会打开,但整个应用程序都是我称之为“白云”的东西。整个应用程序和对话框都是模糊的,什么都不能点击。然后,我单击浏览器 (IE) 刷新按钮,该按钮关闭对话框并返回包含链接所在数据列表的页面。
我尝试使用 IE 开发人员工具,发现当删除 id 为 HX_DLG_SCRATCH_0 的元素时,这个白云就会消失,例如可以关闭对话框,但应用程序的背景仍然存在(例如 Firefox 中的“正常行为”将不是被阻止的对话框,但应用程序的背景是灰色的,对话框后面没有应用程序元素)。此元素由 ibm-jsf 生成。
这是来自 IE DOM 资源管理器的元素:
<BODY bodyUnloadEventNum="1" marginwidth="0" marginheight="0" hasbox="2" boxItem=" [object]"><DIV id=HX_DLG_SCRATCH_0 style="FONT-SIZE: 1px; BORDER-TOP: 0px; HEIGHT: 1166px; BORDER-RIGHT: 0px; WIDTH: 1676px; BORDER-BOTTOM: 0px; POSITION: absolute; PADDING-BOTTOM: 0px; PADDING-TOP: 0px; PADDING-LEFT: 0px; LEFT: 0px; FILTER: progid:DXImageTransform.Microsoft.Alpha(enabled=false); MARGIN: 0px; BORDER-LEFT: 0px; Z-INDEX: 10001; TOP: 0px; PADDING-RIGHT: 0px; BACKGROUND-COLOR: #e2e2e2" name="HX_DLG_SCRATCH_0" hasbox="2" boxItem="[object]"></DIV></BODY>
</html>
这是链接所在页面的jsp代码的一部分:
<h:outputLink id="link1" rendered="#{not empty book.bookType}">
<h:outputText id="text1" value="#{msg[book.bookType.tag]}"
styleClass="outputText">
</h:outputText>
<hx:behavior event="onclick" behaviorAction="get;show;stop" id="behaviour1"
targetAction="subview1:panelForm2:editBookDialog;subview1:panelForm2:editBookActionDialog"
onActionFunction="setvalue('subview1:panelForm2:newItem', 'edit'); setvalue('subview1:panelForm2:itemId', '#{book.bookId}');"></hx:behavior>
</h:outputLink>
这是使用ajax 的editBookActionDialog.jsp 对话框的jsp 代码的一部分。
<hx:ajaxRefreshRequest id="ajaxRefreshRequest1"
target="subview1:panelForm2:editBookActionDialog"
params="itemId;newItem"
onstart="showProgressBar();" oncomplete="hideProgressBar();">
</hx:ajaxRefreshRequest>
我无法追查为什么这只会在 IE 中发生,在 Firefox 中它可以正常工作。
请提供任何有关它的指导或信息,我们将不胜感激。
非常感谢你,
mismas
[编辑] 只是我现在想到的一个想法。
也许这个“白云”应该是那个灰色的背景,但是在 IE 中有些东西与 css 混淆了......
在我看来这可能是正确的线索,因为没有 javascript 错误或任何其他类型的错误.. .
如果您认为我遗漏了什么,请纠正我... thnx!
[EDIT2 - 重要]
我确定了它的原因!
这是一个CSS问题。position: absolute 这个糟糕的 HX_DLG_SCRATCH_0 元素导致了这个问题。
您能否建议如何将这个 ibm-jsf 生成的位置:absolute 覆盖为 position:relative?
另外,我想只为 IE 添加这个“hack”。我知道这不好,但这显然符合整个应用程序的精神:)
Tnx!