0

私のページ レイアウト (Primeface を使用) には、すべてのコンテンツを含む西、北、中央のレイアウト パネルがあります。中央のレイアウトには iframe が含まれており、メニュー オプションが選択されるたびに (西のパネルで)、中央のコンテンツのみが更新されます (Ajax を使用)。

ページのレンダリング/読み込み中に、他のパネルの 1 つに「読み込み中の gif」を表示したいと考えています。次のコードを使用しました。

xhtml セグメント

 <p:ajaxStatus style="width:32px; height:32px;" id="ajaxStatusPanel">
            <f:facet name="start">
                <p:graphicImage value="/resources/img/progress.gif" />
            </f:facet>

            <f:facet name="complete">
                <h:outputText value="" />
            </f:facet>
    </p:ajaxStatus>

ただし、これは ajax リクエストが終了するとすぐに完了するため、ローダーが短時間表示されます。ただし、ページの読み込み/レンダリングには少し時間がかかる場合があります。「ページレンダリング」コールバックを提供する方法はありますか?

4

1 に答える 1

1

内にコンテンツを実際にロードするとき、ページ、特にイベント ハンドラーiframeに JavaScript を少し追加することで、この問題を解決できます。onload

例えば:

<iframe id="navigation" src="#{layout.navigation}" onload="hideDialog()"
style="position: absolute; top: 0px; left: 0px; bottom: 0px; right: 0px; width: 100%; height: 100%; border: none; margin: 0; padding: 0; overflow: hidden; z-index: 999999;">
</iframe>

上記のコードにより、内のコンテンツの読み込みが完了hideDialog()したときに関数が実行されます。iframe

呼び出す関数 (例: hideDialog()) には、JSF/primefaces によって生成されたダイアログへの参照を含めて非表示にすることができます。

<script>
function hideDialog()
{
if(statusDialog != undefined)
statusDialog.hide();
}
</script>

生成された html+javascript を検索して、使用する正確な名前/ID を見つける必要がある場合があります (ダイアログへの参照を取得するため)。

于 2013-06-20T13:09:25.603 に答える