Javascript/jQuery Load 函数,文本选择

Javascript/jQuery Load function, text selection

本文关键字:文本 选择 函数 Load jQuery Javascript      更新时间:2023-09-26

我的网站上有一个控制台,它显示了一个日志文件,我已经设置了它,以便它每 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);
});

这工作正常,但是当我尝试在控制台中选择一些文本时,问题就出现了。每次更新时,我的选择都会被取消

我能做些什么来解决这个问题?

请考虑使用

$( "#console" ).append(); ,而不是使用 $( "#console" ).load("console/getlog.php"); 来更新主机。 这应该可以防止整个事情重新加载并删除您的选择。

您可以执行类似append(getLog());的操作,其中getLog()是返回日志内容的函数。 追加可用于硬编码内容(文本/html)或函数的结果。

有关 .append() 的更多信息,请单击此处

也在这里 - jQuery API 文档

就像MelanciaUK建议的那样,当控制台处于焦点时暂停doStuff()

您可以通过鼠标悬停/鼠标

退出(因此控制台在您悬停时停止更新)或在鼠标按下/鼠标向上检测到该焦点,这不可用,因为您几乎没有时间按 Cmd + C 来保存您的选择。

一些肮脏的例子:http://jsfiddle.net/ZEW5s/(鼠标向上后更新为暂停:http://jsfiddle.net/ZEW5s/1/)

不过,tymeJV 建议使用 setTimeout 而不是setInterval是一个很好的建议。

我能想到的唯一解决方法是延长延迟时间,以便您有时间选择文本。

答案不多,但我无法评论,所以就在这里。有一些方法可以访问和操作选择,尽管如果我没记错的话,它们取决于浏览器。看看这个:

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

我建议更改 doStuff() 以保存当前选择,并尝试在加载后应用它。