以下是用例:用户单击链接,该链接打开一个显示文本日志内容的窗口。很容易。但有没有办法使用POST,将文本日志打开到某个位置(即,搜索帖子中给出的特定时间戳,并在该特定位置显示该文件)?
(假设我不能在文本日志中放置html标签 - 它是一个原始文件)。
日志模板:
+++ 2009/06/19 10:47:12.264 ACTION +++
+++ 2009/06/19 10:49:12.111 ACTION +++
所以我希望页面加载特定的时间戳。
谢谢,
迈克尔
答案 0 :(得分:3)
为什么你不能只拥有一个php或perl或simlar脚本来当场处理日志文件,并坚持使用html锚点并且每天调用它?
进行现场处理还可以显示日志的精简副本,该副本仅与相关事件的时间跨度相关。
答案 1 :(得分:2)
由于您无法修改文件,唯一的方法是将其包装在<frame>
或<iframe>
中,并驱动搜索和滚动邻近/包含页面中的JavaScript。< / p>
以下是一个示例,您可以在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>
框驱动滚动,但您可以看到它对您有用。
答案 2 :(得分:0)
如果你可以在文件的文本周围添加一些标签,那么你可能会插入一些在加载后滚动窗口的javascript。
答案 3 :(得分:0)
Yes,但通过查询字符串传递参数会简单得多。
要滚动到文本文件中的某个位置,您需要使用javascript(我认为过于复杂)或添加html anchor tag。
如果您计划在窗口中发布原始文本日志,您也会遇到一些困难,因为HTML无法识别换行符并将日志一起运行到一个blob中。
答案 4 :(得分:0)
你试过吗
window.open ('log.txt');
window.scrollTo (0, window.scrollMaxY);
?来自mozilla参考:https://developer.mozilla.org/en/DOM/window.scrollMaxY
答案 5 :(得分:0)
保留已翻译为HTML的日志文件的“活动副本” - 每次修改原始文件时(或每隔X秒),检查并附加应用于HTML版本的HTML锚点的最新行