繁体   English   中英

firefox 11和richfaces 3.1.5.GA/jsf 1.1.11 html注入

[英]firefox 11 and richfaces 3.1.5.GA/jsf 1.1.11 html injection

因此,我们有一个jsf / myfaces + rf应用程序,可以在FF 10上正常工作。但是FF 11本周发布了,我们看到了来自a4j标签的html注入问题。 如果我们有一个简单的facelet页面,并且仅添加一个a4j组件,则firefox 11将渲染两个head和body标签(一对head and body标签只是空的,并且它们以某种随机的顺序渲染,有时是空的身体标记位于页面内容之后,有时也位于页面内容之后。
这在客户端引发了许多复杂的CSS和JQuery逻辑(我们有一个CSS / JS开发人员正在围绕它进行一些变通的方式,但这并不理想)。 其他人是否正在看到这种情况或对解决方法有任何想法,因此a4j标签不会自动注入多余的头部/身体标签?

我听说jsf2 / richfaces 4没有这个问题,但是此时升级需要花费大量时间和精力,因此想看看是否还有其他选择(我想也是为了确认确实如此)如果必须结束升级,则FF 11的rf4不会出现此问题)。 谢谢。

从FF11开始我们也遇到了问题,在尝试了很多东西之后,这个线程解决了我们所有的问题:

FF11和RichFaces

似乎是一个FF错误:Ajax-Response可以,但是在html注入后,a4j:mediaOutput的资源密钥被修改(看起来像是URL编码的)。 因此资源查找失败。 按F5后,将请求整个页面,并且URL有效。 我想说的是:我认为您的代码还可以,我们都必须等待FF12。

似乎FF开始支持“ outerHtml” DOM属性,因此使用后备IE定位代码而不是现代浏览器代码来插入“ A4J.AJAX._scriptEvaluated”代码。

让布兰查德(Jean Blanchard) 在这里解释了如何解决。

要修复它,您必须从richfaces-impl.jar更新文件/org/ajax4jsf/javascript/scripts/AJAX.js。 不幸的是,我无权访问该库,因此这是我正在使用的丑陋的解决方法:

      <!--[if !IE]> -->
    <script type="text/javascript">
    // <![CDATA[
        function fixA4J() {
            var bodies = document.getElementsByTagName("body");
            if (bodies.length > 1) {
               for (var i = 0; i < bodies.length; i++) {
                    if (bodies[i].firstChild == null) {
                        bodies[i].parentNode.removeChild(bodies[i])
                        break;
                    }
                }
                var heads = document.getElementsByTagName("head");
                for (var i = 0; i < heads.length; i++) {
                    if (heads[i].children.length == 1) {
                        var s = heads[i].firstChild;
                        heads[i].parentNode.removeChild(heads[i])
                        document.head.appendChild(s);
                        break;
                    }
                }
        }
        window.setTimeout(fixA4J, 100);
    // ]]>
    </script>
    &lt;!-- &lt;![endif]--&gt;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM