2009-07-14 3 views
0

Вот пример использования. Пользователь нажимает на ссылку, которая открывает окно, отображающее содержимое текстового журнала. Достаточно легко. Но есть ли способ использовать POST, чтобы открыть этот текстовый журнал в определенном месте (т. Е. Найти конкретную метку времени, указанную в сообщении, и показать файл в этом конкретном месте)?HTML-ссылка на определенную точку на веб-странице - незначительный поворот

(Предположим, я не могу поместить теги html внутри текстового журнала - это необработанный файл).

Шаблон журнала:

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

Так что я хочу, чтобы страница загрузки определенной метки времени.

Спасибо,
Майкл

+0

Является ли файл журнала необработанным файлом '.txt'? –

+0

это a.файл журнала, который хорошо отображается в chrome/firefox/ie (текст не смешался – Dirk

+0

вы можете предоставить нам небольшую часть этого файла журнала для загрузки и просмотра, возможно, есть инструменты для его анализа и отображения в таблице с помощью функции поиска – balexandre

ответ

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; Я был бы удивлен, если бы он работал в другом месте без изменений, но вы никогда не знаете свою удачу!

Очевидно, что в вашем случае вы будете прокручивать программно, а не через поле <input>, но вы можете увидеть, как это сработает для вас.

+0

Да, но не было бы точного способа прокрутки до определенной области в текстовом файле. У разных пользователей может быть diff шрифты или размер шрифта и т. д. и т. д., и он будет прокручиваться до другого места для каждого. –

+0

Майкл сказал «найти конкретную временную метку, указанную в сообщении» - JavaScript может выполнить этот поиск, измерить расстояние до верхней части документа и прокрутить до этого места. Я сделал это раньше. – RichieHindle

+0

Можете ли вы предоставить мне некоторые детали? – Dirk

0

Если вы могли бы поставить некоторые тегов вокруг текста файла, то вы, вероятно, можете вставить некоторые JavaScript, что бы прокрутить окно после загрузки.

0

Yes, но передача ваших параметров с помощью строки запроса будет намного проще.

Чтобы перейти к определенной позиции в текстовом файле, вам понадобится JavaScript javascript (слишком сложный, на мой взгляд) или добавьте html anchor tag.

Если вы планируете размещать текстовый журнал в окне, вы также столкнетесь с некоторыми трудностями, поскольку HTML не будет распознавать новые строки и запускать журнал вместе в один кадр.

+0

Кажется, что мой файл журнала не отображается как blob при отображении в html. В принципе, я хочу подражать этому поведению: если вы ищете слово, которое происходит в нижней части веб-страницы, ваш браузер переходит к этому экземпляру. Каков способ сделать это с помощью javascript? – Dirk

+0

@ Майкл: Мой обновленный ответ показывает, как это сделать. – RichieHindle

0

вы пробовали

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

? Из справки mozilla: https://developer.mozilla.org/en/DOM/window.scrollMaxY

+0

См. Мой комментарий на ответ @ RichieHindle; нет точного способа прокрутки до определенной точки в текстовом файле, так как разные пользователи могут иметь разные шрифты, размеры шрифтов и т. д. –

3

Почему у вас просто нет скрипта php или perl или simlar, который обрабатывает файл журнала на месте и хранится в html-якорях и называет его днем?

Выполнение обработки на месте также позволит вам отображать обрезанную копию журнала, относящуюся только к периоду времени вокруг соответствующего события.

+0

Это большой файл журнала, и было бы много якорей (каждая временная метка должна была бы быть якорь) – Dirk

+0

Если вы хотите только перейти к определенному месту, просто поставьте якорь для этого конкретного. Или только привязки один раз в минуту/час на отметках времени и т. Д. – whatsisname

+0

Проблема с обрезкой файла - нет окончательной начальной и конечной точки. Я ищу конкретную точку в журнале, а затем проверяю действия до и после нее, чтобы найти последовательность действий. – Dirk

0

Сохраните «живую копию» файла журнала, который был переведен в HTML, - каждый раз, когда исходный файл изменяется (или просто каждые X секунд), проверяйте и добавляйте самые новые строки с помощью привязок HTML, применяемых к HTML версия.

Смежные вопросы