3

リアルタイムで追跡する必要があるログがあります。

        <h:panelGroup layout="block" style="width:100%; max-height: 400px; overflow: auto;" id="log" styleClass="logArea">
            <h:outputText value="#{myBean.log}" style="white-space:pre;"></h:outputText>
        </h:panelGroup>
        <h:outputScript>
        function scrollLog() {var log=jQuery('.logArea');log.scrollTop(log.scrollHeight-log.height);};</h:outputScript>
        <p:remoteCommand name="getLog" process="@this" update="log" onsuccess="scrollLog();">
        </p:remoteCommand>

remoteCommand が実行された後、ログ出力は正常に更新されますが、一番下までスクロールしません。部分的な更新が適用される前に scrollLog() が呼び出され、更新によってスクロールバーが一番上にリセットされると思われます。

次のjQueryコードも試しました:

jQuery( function() { var log=jQuery('.logArea');log.animate({ scrollTop: log.scrollHeight}, 1000); });

しかし、何も機能していないようです。

これを回避し、更新のたびにログの一番下までスクロールするにはどうすればよいですか?

4

1 に答える 1