2011-08-15 10 views
0

richfaces combobox/suggestionboxに問題があります。RichFaces comboBox/suggestionBox再レンダリング問題

Uncaught Error: NOT_SUPPORTED_ERR: DOM Exception 9

(それが見えます:彼らはページと一緒にレンダリングされますが、できるだけ早く私は、彼らが、彼らはレンダリングされていないに含まれているしている再度レンダリングと私は言ってJS-例外を取得しているとき、すべてが正常に動作しますA4J.AJAX.XMLHttpRequest.updatePagePartで何かのように失敗している。)コードの

関連部分:

<a:outputPanel id="autoFillPanel"> 
    <a:outputPanel layout="none" rendered="#{myBean.renderAutofiller}"> 
     <h:inputText id="autofillInput" value="#{myBean.value}" /> 

     <rich:suggestionbox for="autofillInput" var="result" 
      suggestionAction="#{myBean.autoCompleteFiller}"> 
      <h:column> 
       <h:outputText value="#{result}" /> 
      </h:column> 
     </rich:suggestionbox> 
    </a:outputPanel> 
</a:outputPanel> 

任意のアイデア?私は他のコンポーネント(h:inputTextsなど)でこの問題を抱えていません。

+0

このエラーはすべてのブラウザで発生しますか? –

+0

使用しているRichfacesのバージョンは? – reevesy

+0

@reevesy私たちは3.3.3を使用しています –

答えて

1

document.importNodeのWebkit実装に問題があるようです。あなたのテンプレートファイルにJavaScriptコードのこの小さな作品を使用することができます。この問題を回避するには:この質問は古いの場合であっても

if(/webkit/.test(navigator.userAgent.toLowerCase())){ 
    var _importNode = window.document.importNode; 
    window.document.importNode = function(node, deep){ 
     try{ 
      return _importNode.apply(this, arguments); 
     } catch(e) { 
      if(e.code == DOMException.NOT_SUPPORTED_ERR){ 
       // clone and adopt 
       return document.adoptNode(node.cloneNode(deep)); 
      } 
      throw e; 
     } 
    }; 
} 
0

、私は同じ問題に遭遇し、私たちのアプリケーションでそれを解決しました。

Richfaces 3.3.3、IE9、IE9をエミュレートするのではなく、IE9をネイティブモードで実行できるように変更したAjax.jsも同じ設定です。 suggestionbox.jsで

は、IEがフォーカスを維持するための回避策があります:(ライン126 ++)私はマーク変更に伴い

//IE only 
     if (RichFaces.navigatorType() == RichFaces.MSIE) { 
      Event.observe(this.element, "focusout", function(event) { 
       //in IE8+ , event.toElement is no longer supported for focusout 
       var elt = event.toElement || event.relatedTarget; //CHANGE HERE 
       while (elt) { 
        if (elt == this.update) { 
         this.element.keepFocus = true; 
         elt = undefined; 
        } else { 
         elt = elt.parentNode; 
        } 
       } 
      }.bindAsEventListener(this)); 
     } 

、コードは私のためにIE9で正常に動作、およびスクロールスクロールバーを使用して再度可能です。

関連する問題