Сообщение от MARY_FS
|
я имела ввиду javascript. Я формирую отчет в HTML по результатам анализа текстовых файлов
<a href=\"file://localhost/" + File + "\" target=\"_new\" >" + File + "</a>
Сформировала ссылки на локальные файлы. они открываются в браузере, но на начале. А мне нужно чтобы они открывались на том месте, где нашлась сигнатура. В лучшем варианте - в текстовом редакторе. Все это мне надо сделать на HTML, я так полагаю, надо вставить код на javascript
|
MARY_FS,
В головном файле в ссылку надо добавить параметр с сигнатурой,
чтобы было в результате примерно так:
<a href="file://localhost/filename.html?sign=текст сигнатуры" ...
Текстовые файлы, открываемые по ссылкам, придется преобразовать в html - для того, чтобы в них работал javascript, примерно так:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
// здесь будет скрипт обработки
</script>
</head>
<body onload=" getParameterByName('sign')">
<textarea rows="40" style="width:100%;height:100%">
Текст из исходного текстового файла
.....
.....
</textarea>
</body>
</html>
Насчет скрипта обработки:
Получение параметров из головного файла - это легко:
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.search);
if (results == null)
// нет параметра - ничего не делаем
else
var signature = decodeURIComponent(results[1].replace(/\+/g, " "));
// далее нужен поиск по сигнатуре и скроллинг в верх экрана
};
А вот насчет поиска и скроллинга столкнулся с проблемами:
пробовал использовать Range и sctollIntoView - но применительно к содержимому textarea эти методы отказываются корректно работать.
Если исходный текст размещать в div - эти методы работают, но для нормального отображения исходного текста требуется дополнительная обработка
Может, кто что подскажет по этому поводу?
PS: при размещении в div работоспособен такой код поиска и скроллинга:
var start = document.getElementsByTagName('div')[0].firstChild;
if (document.createRange) {
var rng = document.createRange();
rng.setStart(start, start.nodeValue.indexOf(signature));
rng.setEnd(start, start.nodeValue.indexOf(signature) + signature.length);
var highlightDiv = document.createElement('span');
highlightDiv.style.backgroundColor = 'lightblue';
rng.surroundContents(highlightDiv);
highlightDiv.scrollIntoView();
} else {
alert('Вероятно, у вас IE8-');
}