2014-02-25 64 views
8

好了一個奇怪的一個在這裏,我沒有看到任何其他報告,最近有IE11用戶報告了一些UI錯誤,在做了一些測試後,我意識到執行reRender (我正在使用A4J)IE11將HTML元素放在錯誤的位置,例如。IE11更改JSF重新渲染的DOM結構

<s:div id="parent" rendered="#{someCondition}"> 
    <div id="brother"></div> 
    <div id="sister"></div> 
</s:div> 

出現這樣後重新呈現

<s:div id="parent" rendered="#{someCondition}"> 
    <div id="brother"> 
     <div id="sister"></div> 
    </div> 
</s:div> 

這顯然是嚴重破壞了佈局

我混合JSF/HTML組件不少,但不認爲這應該是造成問題?

任何想法可能導致這種情況?

JSF 1.2 | RichFaces 3.3 | Facelets的

+0

您是否找到解決此問題的解決方案?在某些情況下可以通過更改html代碼來避免這種情況(我猜想在重新渲染的區域內只有一個節點),但這些只是代碼的變通方法,在所有其他瀏覽器中都能正常工作。 – Roben

+0

@Roben是的我認爲我發現了這個問題,具體到RichFaces https://issues.jboss。org/browse/RF-13443,我正準備使用修補過的AJAX.js進行測試,因此我會通知您 – DaveB

+0

謝謝。 sarissa修復對我來說不起作用(幾周前檢查過),但也許我弄錯了。你一定要試一試。 – Roben

回答

6

你試過設置meta標籤爲IE8渲染模式:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /> 

正如我聽說也RichFaces的3只支持最多Internet Explorer 8,或者你可以考慮切換到RichFaces的4目前的瀏覽器支持。

Microsoft: how to ensure compatibility

希望這有助於。

+1

剛剛嘗試過它,它在至少一個特例中起作用,謝謝!事實上,如果你不想失去更新的CSS特性,那麼''就足夠了。 (我確信我之前嘗試過'X-UA-Compatible',它不起作用 - 或許我錯了。) – Roben

+1

我可以證實,''解決了IE11和Richfaces 3.3.3的問題。 –

+0

我有一個與Richfaces 3.3.1(autosuggest)相似的問題,選中的值沒有在我的後臺bean中讀取,但添加元標記(IE 10)解決了這個問題=> no autosuggesting on such fields – David

1

由於我的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中組織\ Ajax4jsf的\ prototype.js中的補丁程序的JavaScript \腳本,使用navigator.userAgent更改將瀏覽器設置爲IE的方法。

Browser: { 
IE: (!!(window.attachEvent && 
    navigator.userAgent.indexOf('Opera') === -1) 
    || (navigator.userAgent.toLowerCase().indexOf("like gecko") > -1 
    && navigator.userAgent.toLowerCase().indexOf("11.") > -1)) 

現在,如果您在瀏覽器控制檯上調試Prototype.Browser,您將會看到IE11。

請注意,RF可以「縮小」它正在使用的所有第三個庫腳本。
檢查加載在html的<head>中的文件。也許所有這些更改都應在richfaces-impl-3.3.3.Final.jar/org/ajax4jsf/framework.pack.js中進行。

0

我使用patching-richfaces-3-3-3-ajax-js-for-ie9指南可以使用帶有ie11的richfaces 3.3.3。我剛在Ajax.js上更新了Sarissa的0.9.9.7版本。

元標記X-UA-Compatible在我的情況下不能使用它,它在iframe(子)中,我忽略了元標記。