2009-07-14 79 views
0

这是用例:用户单击一个链接打开一个窗口,显示文本日志的内容。很简单。但是有什么方法可以使用POST,将文本日志打开到某个位置(即搜索帖子中给出的特定时间戳,并在该特定位置显示该文件)?HTML链接到网页中的某个点 - 轻微扭曲

(假设我不能在文本日志中放置html标签 - 这是一个原始文件)。

模板日志:

+++ 2009/06/19 10:47:12.264 ACTION +++ 
+++ 2009/06/19 10:49:12.111 ACTION +++ 

所以我想在页面加载特定的时间戳。

感谢,
迈克尔

+0

日志文件是一个原始的`.txt`文件吗? – 2009-07-14 21:03:12

+0

这是一个。在chrome/firefox/ie中很好地显示的日志文件(文本不会混淆在一起 – Dirk 2009-07-14 21:09:24

+0

您可以为我们提供一小部分日志文件供下载和查看,也许有工具可以解析它并在表格中显示方式与搜索功能 – balexandre 2009-07-14 21:13:59

回答

2

由于您无法修改该文件,因此唯一的方法是将其包装在<frame>或中,并驱动从相邻/包含页面中的JavaScript进行搜索和滚动。

下面是一个例子,你可以在http://entrian.com/so-container.html

<html><head><script> 
function go() { 
    // "line" is the <input> for which line to jump to; see the HTML. 
    var line = document.getElementById('line').value; 
    if (document.body.createTextRange) { // This is IE 
     var range = frames['log'].document.body.createTextRange(); 
     if (range.findText(line)) { 
      range.select(); // Scroll the match into view and highlight it. 
     } 
    } else { // Non-IE. Tested in Firefox; YMMV on other browsers. 
     frames['log'].find(line); // Scroll the match into view and highlight it. 
    } 
} 
</script></head><body> 
<input type='text' size='5' name='line' id='line' value='10'> 
<button onclick='go()'>Go</button><br> 
<iframe name='log' width='100' height='50' src='so-data.txt'> 
<!-- so-data.txt contains the numbers 01-20 on separate lines --> 
</body></html> 

网上试试我测试过,在IE7和FF3;如果它没有编辑地在别处工作,我会感到惊讶,但你永远不知道你的运气!

显然在你的情况下,你会以编程方式驱动滚动而不是通过<input>框,但你可以看到它如何为你工作。

0

如果你可以把周围的文件的文本,一些标签,那么你也许可以插入一些JavaScript,将它装载后滚动窗口。

0

Yes,但通过查询字符串传递参数将会变得简单很多。

要滚动到文本文件中的某个位置,您将需要用户javascript(在我看来过于复杂)或添加html anchor tag

如果您打算在窗口中发布原始文本日志,您也会遇到一些困难,因为HTML无法识别换行符并将日志一起运行到一个Blob中。

3

为什么你不能只有一个php或perl或simlar脚本,当场处理日志文件,并坚持在html锚点并称它为一天?

在现场处理时还可以显示一个修剪下来的日志副本,这些副本只与相关事件周围的时间段相关。

0

保留已翻译为HTML的日志文件的“活动拷贝” - 每次修改原始文件(或者简单地每隔X秒),检查并追加最新的行与应用于HTML的HTML锚点版。