【问题标题】:HTML link to a certain point in a webpage - slight twist指向网页中某个点的 HTML 链接 - 轻微扭曲
【发布时间】:2009-07-14 20:52:22
【问题描述】:

以下是用例:用户单击一个链接,该链接会打开一个显示文本日志内容的窗口。很容易。但是有没有办法使用 POST,将文本日志打开到某个位置(即,搜索帖子中给出的特定时间戳,并在该特定位置显示文件)?

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

日志模板:

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

所以我希望页面加载特定的时间戳。

谢谢,
迈克尔

【问题讨论】:

  • 日志文件是原始的.txt 文件吗?
  • 这是一个.log文件,在chrome/firefox/ie中显示效果很好(文字不会乱码
  • 您能否提供该日志文件的一小部分供我们下载和查看,也许有工具可以解析它并以具有搜索功能的表格方式显示。
  • 已对其进行解析并将其分解以存储在表格中,但我的客户希望能够直接链接到原始文件以进行数据分析。日志是这样的: 时间:事件:行动:信息 时间:事件:行动:信息 我想让日志出现在特定时间,但也要保留其余数据。
  • karakas-online.de/EN-Book/… 对明文混乱很有用

标签: html search text


【解决方案1】:

为什么不能只用一个 php 或 perl 或 simlar 脚本来当场处理日志文件,并插入 html 锚点并收工?

当场处理还允许您显示日志的精简副本,该副本仅与相关事件的时间跨度相关。

【讨论】:

  • 这是一个很大的日志文件,会有很多锚点(每个时间戳都必须是一个锚点)
  • 如果你只想去一个特定的地方,只需为那个特定的地方放一个锚。或者在时间戳中每分钟/小时只有一次锚点,等等。
  • 缩减文件的问题是没有明确的起点和终点。我正在寻找日志中的特定点,然后检查它之前和之后的操作以找到一系列操作。
  • 我明白这一点,但“缩减”与日志文件的持续时间与事件的持续时间成正比。例如,如果您有一个每天切换一次的日志,并且您正在寻找一个仅持续几分钟的事件,如果您显示前后一小时发生的事情可能会完成 95% 的工作时间。对于那些其他罕见的情况,那么只需硬着头皮下载整个文件并查找相关时间戳。
【解决方案2】:

由于您无法修改文件,唯一的方法是将其包装在 <frame><iframe> 中,并在相邻/包含页面中通过 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 中测试过;如果它在没有编辑的情况下在其他地方工作,我会感到惊讶,但你永远不知道你的运气!

显然,在您的情况下,您将以编程方式而不是通过 &lt;input&gt; 框来驱动滚动,但您可以看到它对您的工作方式。

【讨论】:

  • 是的,但是没有准确的方法可以滚动到文本文件中的特定区域。不同的用户可能有不同的字体或字体大小等,它会为每个用户滚动到不同的位置。
  • Michael 说“搜索帖子中给出的特定时间戳” - JavaScript 可以进行搜索,测量到文档顶部的距离,然后滚动到该位置。我以前也这样做过。
  • 你能告诉我一些细节吗?
  • 是的,我知道它可以用 HTML 做到这一点,但你能在原始文本文件中进行这些测量吗?
  • 如何使用 HTML 进行测量?
【解决方案3】:

如果您可以在文件的文本周围放置一些标签,那么您可能会插入一些 javascript 来在加载后滚动窗口。

【讨论】:

    【解决方案4】:

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

    要滚动到文本文件中的某个位置,您需要使用javascript(我认为过于复杂)或添加html anchor tag

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

    【讨论】:

    • 我的日志文件在 html 中显示时似乎没有显示为 blob。基本上,我想模仿这种行为:如果您搜索出​​现在网页底部的单词,您的浏览器会跳转到该实例。用javascript有什么方法?
    【解决方案5】:

    你试过了吗

    window.open ('log.txt');
    window.scrollTo (0, window.scrollMaxY);
    

    ?来自 Mozilla 参考:https://developer.mozilla.org/en/DOM/window.scrollMaxY

    【讨论】:

    • 查看我对@RichieHindle 回答的评论;没有准确的方法可以滚动到文本文件中的特定点,因为不同的用户可能有不同的字体、字体大小等。
    【解决方案6】:

    保留已翻译为 HTML 的日志文件的“活动副本” - 每次修改原始文件(或只是每 X 秒)时,检查并附加最新的行,并将 HTML 锚点应用于 HTML 版本.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 2010-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2012-01-15
      相关资源
      最近更新 更多