Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/jQuery加载函数,文本选择_Javascript_Jquery_File_Text_Selection - Fatal编程技术网

Javascript/jQuery加载函数,文本选择

Javascript/jQuery加载函数,文本选择,javascript,jquery,file,text,selection,Javascript,Jquery,File,Text,Selection,我在我的网站上有一个控制台,它显示一个日志文件,我对它进行了设置,使它每500毫秒刷新一次 jQuery(document).bind("ready", function() { $("#console").animate({ scrollTop: $(document).height() }, 1000); function doStuff() { $( "#console" ).load("console/getlog.php"); $('#conso

我在我的网站上有一个控制台,它显示一个日志文件,我对它进行了设置,使它每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);
});
这很好,但是当我尝试在控制台中选择一些文本时,问题就出现了。每次更新时,我的选择都会被取消


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

我唯一能想到的解决办法是延长延迟时间,这样你就有时间选择文本了。

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

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

而不是使用$console.loadconsole/getlog.php;要更新控制台,请考虑使用$控制台.AppEnter;这将防止整个过程重新加载和删除您的选择

您可以执行类似appendgetLog的操作;其中getLog是一个返回日志内容的函数。Append可用于硬编码内容文本/html或函数结果


正如MelanciaUK所建议的,当控制台处于焦点时暂停doStuff

您可能会通过mouseover/mouseout检测到该焦点,因此当您将其悬停在控制台上时,或在mousedown/mouseup上时,控制台将停止更新,这是不可用的,因为您几乎没有时间按Cmd+C来保存您的选择

一些肮脏的例子:鼠标点击后暂停更新:


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

单击刷新时暂停刷新,或者当刷新聚焦时暂停刷新。请注意,加载函数每半秒启动一次,而不管最后一次刷新的状态如何。根据成功/失败情况,最好在前一个加载请求的回调中使用setTimeout。否则,如果服务器出现问题,您每半秒就会收到一个错误的请求。append只是不断重复打印相同的请求。当用户开始选择时,可以将其暂停约5-10秒,这将给他们足够的时间进行选择和复制。我只是想象有人在不知情的情况下让鼠标悬停的情况,这绝对是可能的。我更新了我的提琴-删除了悬停内容并添加了一些_focusTimer,以防止doStuff函数在mouseup之后运行_focusTimer.threshold毫秒。还向元素添加了.pause类,以指示更新函数已暂停。