找到字符串时,使用事件管理器刷新页面



我已经使用这段代码来更新页面中的代码框,其中包含使用 dyntask.php 检索的数据。

<script type="text/javascript">
if(typeof(EventSource)!=="undefined") {
var eSource = new EventSource("dyntasks.php");
eSource.onmessage = function(event, previous) { 
document.getElementById("serverData").innerHTML = event.data; 
};
}
</script>

使用 dyntask.php 收集的数据是从文本文件中提取的。

2018-05-10 14:02:01: starting task 99333
2018-05-10 14:02:03: task 99333 completed
2018-04-13 15:13:44: triggered tasks
2018-05-10 14:05:52: starting task 99334
2018-05-10 14:05:57: task 99334 completed
2018-05-10 14:11:01: starting hidden task 99335
2018-05-10 14:11:07: hidden task 99335 completed
updating...

文本文件的最后一行始终为"正在更新...".我需要做的是在最后一行之前不断检查该行的内容

  • 每次行中出现关键字"starting"时,都应开始检查
  • 找到键工作后,脚本应开始检查是否存在"已完成"一词
  • 当找到"已完成"一词时,脚本应刷新整个页面

我对Javascript的了解并不比创建这个小脚本所需要的更多。我不知道如何做到这一点,但我确信有人可以在脚本中添加两行以使其按预期工作。

你能给我一些帮助吗?

我不确定您需要什么格式,正则表达式可以使用一些改进,但这至少应该使您能够从"更新..."之前的最后一行中获取值。发短信。

var text = `2018-05-10 14:02:01: starting task 99333
2018-05-10 14:02:03: task 99333 completed
2018-04-13 15:13:44: triggered tasks
2018-05-10 14:05:52: starting task 99334
2018-05-10 14:05:57: task 99334 completed
2018-05-10 14:11:01: starting hidden task 99335
2018-05-10 14:11:07: hidden task 99335 completed
updating...`;
var regex = /(d{4}-d{2}-d{2} d{2}:d{2}:d{2}:)(.*?)n(updating)+/;
var result = regex.exec(text);
document.write(result[1] + ' ' + result[2]);

找到了解决方案!

<script type="text/javascript">
if(typeof(EventSource)!=="undefined") {
var eSource = new EventSource("dyntasks.php");
eSource.onmessage = function(event, previous) { 
document.getElementById("serverData").innerHTML = event.data; 
var contents = event.data.split('<br/>') ;
if(contents[6].indexOf('completed') !== -1 && contents[6] != localStorage.getItem('previous') && previous !== '') {
window.location.href = '/index.php?id=taskmanager';
};
localStorage.setItem('previous', contents[6]);
};
}
</script>

最新更新