0

firefoxでテストされるまで、非常に正常に動作していたPrimeFaces 3.4アプリケーションがあります。ただし、テストに行った後、問題が発生しました。

  • アプリケーションは IE のみで起動されます (IE 9)
  • アプリケーションはフレームセット内で起動されます

p:autocompleteダイアログを含む多くの場所で使用しています。次の場合、これらのオートコンプリートのパネルは通常、クリック後に表示されません。

  • フレームセット内での実行 (通常モードではめったに発生しません)
  • IE 開発者ツールが閉じられている (ツールが開いている場合はめったに発生しないため、バグのデバッグが困難になります)
  • ブラウザ ウィンドウが最大化されていません

最後のことは、私たちの観察からの鍵です。解決策は、ブラウザーを最大化するか (画面が大きいためこれで問題ありません)、コンテンツをズームアウトすることです。したがって、オートコンプリート パネルを表示する必要がある位置の計算に問題があると思われます。アルゴリズムは、親が配置されているかどうか (ダイアログ: 位置が固定されている)、スクロールがあるかどうか、オフセットは何かなど、いくつかの条件を考慮に入れる必要があります。

ただし、デバッグはほとんどオプションではありません.1つ目は、最小化されていない正式なprimefaces.jsがないためです.2つ目は、IE開発者ツールを開くと、エラーの発生が何らかの形で停止するためです.

そのような状況下で、オートコンプリートがどのようにそのように動作するのか、またパズルの要素 (フレームセット、ダイアログ、IE 開発ツール) によってオートコンプリートがどのように影響を受けるのかを尋ねます。

4

1 に答える 1

0

関連: IE8 と Primefaces p:selectOneMenu がフォームに多数の p:selectOneMenu があると誤動作する

問題は、PrimeFacesvisibility:hiddenが多くの次元計算を行うために依存していることです。非表示のコンポーネントがページ境界の外にある場合、IE は想定どおりに寸法を計算していませんでした。PrimeFaces レンダリング エンジンの詳細には触れていませんが、常にスクロールを有効にするだけで問題は解決しました。

body { overflow-y:scroll; }

これは、なぜフレームセットを使用したときに問題が頻繁に見られたのか (場所が少ない)、またはブラウザーを最大化することが役に立った理由についての質問に答えます。

于 2013-02-01T11:41:04.980 に答える