我有一个奇怪的问题,简单的JSF页面在IE11下不起作用。它在Firefox和Chrome下运行正常,但IE11提供'malformedXML:非法争论'。
使用调试器进行调查显示,点击单选按钮的AJAX响应被jsf.js中的IE11视为无效。
实际结果是Element.firstChild设置为null,我假设它表示innerHtml内容不被认为是有效的html。这发生在a)Ajax响应,b)不在Firefox或Chrome上
jsf.js中的相关代码是:
第1472行:jsf.js版本2.2
if (html.length > 0) {
if (isAutoExec()) {
// Create html
parserElement.innerHTML = html;
} else {
// Get the scripts from the text
scripts = stripScripts(html);
// Remove scripts from text
html = html.replace(/<script[^>]*type="text\/javascript"*>([\S\s]*?)<\/script>/igm,"");
parserElement.innerHTML = html;
}
replaceNode (parserElement.firstChild, d);
AJAX响应是:
<?xml version='1.0' encoding='UTF-8'?>
<partial-response id="j_id1">
<changes>
<update id="payment:paymentgroup"><![CDATA[<span id="payment:paymentgroup">Enter <span id="payment:onaccount">Account</span></span>]]></update>
<update id="j_id1:javax.faces.ViewState:0"><![CDATA[-2818987988265526344:7981698299886652187]]></update>
<extension id="org.richfaces.extension">
<render>payment:paymentgroup</render>
</extension>
</changes>
</partial-response>
在上面的代码中,'html'设置为:
<span id="payment:paymentgroup">Enter <span id="payment:onaccount">Account</span></span>
'parserElement.innerHTML = html'的结果是'parserElement.firstChild'保留为null,在'replaceNode(parserElement.firstChild,d)'中引发异常
我在一个包含类似javascript的简单页面中尝试过这个html,但它确实有用。据推测,环境/环境中的某些因素正在影响它。
如果您有任何指导/建议如何解决或解决此问题,我将不胜感激。
您可以在下面看到我正在使用的jsf代码。运行代码的链接是
http://testshop.actionfarm.co.uk/actjsf/
我使用的是java 8.0.45,jboss 9.CR1和Mojarra 2.2.10。我也使用Richfaces 4.5.4,虽然这只是JSF组件。 (我正在使用jboss 8.2,但升级后看看它是否与后来的Mojarra有所不同)