IE11在JSF rerender上更改DOM结构
-
21-12-2019 - |
题
Ok有点奇怪,我没有看到任何其他的报告,我们最近从IE11用户报告了一些UI错误,在做了一些测试之后,我意识到在执行一个reRender(我使用的是A4J)IE11将HTML元素放在错误的地方。
<s:div id="parent" rendered="#{someCondition}">
<div id="brother"></div>
<div id="sister"></div>
</s:div>
rerender后出现这样
<s:div id="parent" rendered="#{someCondition}">
<div id="brother">
<div id="sister"></div>
</div>
</s:div>
这显然对布局造成了严重破坏
我正在混合JSF/HTML组件相当多,但不认为这应该导致问题?
任何想法可能会导致这种情况?
JSF1.2/RichFaces3.3/Facelets
解决方案
你有没有试过设置一个meta标签 IE8 渲染模式:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
正如我所听到的,Richfaces3只支持最多 Internet Explorer 8
, ,或者您可能会考虑切换到RichFaces4以获得当前浏览器支持。
希望这有帮助。
其他提示
作为我的ajax渲染的问题很简单,我选择改变实现(加载所有表单,只是用jQuery切换可见性),但我花了一些时间,而且已经过了一些时间,并且我的贡献就会贡献。
可以使用以下更新修复一些渲染问题: https://ruleoftech.com/2015/patching -richfaces-3-3-3-ajax-js-for-IE11 http://ruleoftech.com/2013/patching -richfaces-3-3-3-ajax-js-for-ie9
您也可以尝试制作位于Richfaces-impl.jar org \ ajax4jsf \ javascript \ scripts中的prototype.js,更改将浏览器设置为IE的方法。
Browser: {
IE: (!!(window.attachEvent &&
navigator.userAgent.indexOf('Opera') === -1)
|| (navigator.userAgent.toLowerCase().indexOf("like gecko") > -1
&& navigator.userAgent.toLowerCase().indexOf("11.") > -1) )
.
现在,如果您在浏览器控制台上调试原型,则将符号为IE11。
要注意,RF可以“缩小它所使用的所有第三个库脚本。
检查HTML的<head>
中加载的文件。也许所有这些更改都应在Richfaces-iclic-3.3.3.3.final.jar / org / ajax4jsf / framework.pack.js中进行。
我使用修补richfaces-3-3-3-ajax-js-for ie9指南,以便能够使用IE11使用Richfaces 3.3.3。我刚刚在Ajax.js上更新了Sarissa的0.9.9.7版。
元标签X-UA兼容无法在我的情况下使用它,它位于一个iframe(孩子)中,我忽略了元标记。