0

私の Web サイトには、ログ ファイルを表示するコンソールがあり、500 ミリ秒ごとに更新されるように設定しました。

jQuery(document).bind("ready", function() {
$("#console").animate({ scrollTop: $(document).height() }, 1000);
    function doStuff() {
        $( "#console" ).load("console/getlog.php");
        $('#console').scrollTop($('#console')[0].scrollHeight);

    } 
setInterval(doStuff, 500);
});

それはうまくいきますが、コンソールでテキストを選択しようとすると問題が発生します。更新するたびに、私の選択はキャンセルされます

これを解決するために私は何ができますか?

4

4 に答える 4

1

$( "#console" ).load("console/getlog.php");を使用してコンソールを更新する代わりに、 を使用することを検討してください$( "#console" ).append();。これにより、全体がリロードされて選択が削除されるのを防ぐことができます。

ログの内容を返す関数append(getLog());where is のようなことができます。getLog()Append は、ハードコードされたコンテンツ (text/html) または関数の結果で使用できます。

.append() の詳細については、こちら

こちらも - jQuery API doc

于 2013-11-06T16:13:50.083 に答える
0

MelanciaUK が提案したようdoStuff()に、コンソールにフォーカスがあるときに一時停止します。

そのフォーカスは、mouseover/mouseout (ホバーするとコンソールの更新が停止するため)、または mousedown/mouseup で検出できますが、Cmd + C を押して選択内容を保存する時間がほとんどないため、あまり使用できません。

汚い例: http://jsfiddle.net/ZEW5s/ (マウスアップ後に一時停止して更新: http://jsfiddle.net/ZEW5s/1/ )

setTimeoutただし、代わりに使用する tymeJV の提案setIntervalは良いものです。

于 2013-11-06T16:28:32.337 に答える
0

あまり答えはありませんが、コメントできないので、ここに行きます。選択にアクセスして操作する方法はいくつかありますが、私の記憶が正しければブラウザによって異なります。これをチェックしてください:

https://developer.mozilla.org/en-US/docs/Web/API/Selection

doStuff() を変更して現在の選択を保存し、ロード後に適用することをお勧めします。

于 2013-11-06T16:11:28.660 に答える
0

それを解決する唯一の方法は、遅延を長くして、テキストを選択する時間を確保することです。

于 2013-11-06T16:07:07.453 に答える