Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.06.2016, 12:37
Интересующийся
Отправить личное сообщение для MARY_FS Посмотреть профиль Найти все сообщения от MARY_FS
 
Регистрация: 15.06.2016
Сообщений: 10

Создать ссылку на открытие локального файла с фокусом в определенном месте
Я делаю отчет в виде документа HTML. Мне нужно создать ссылки на открытие локальных файлов с фокусом в определенном месте (известна строка, в файле ее надо найти поиском). Дело в том, что я пишу программу на С++, отчет в HTML я сформировала с обычными ссылками, а вот как сделать так, чтобы они открывались на определенной строке, да еще и желательно подсвеченной, не знаю. Я полагаю, надо вставить код на js, но я с ним плохо знакома. Помогите, пожалуйста, скажите хотя бы, какие функции использовать.
Ответить с цитированием
  #2 (permalink)  
Старый 21.06.2016, 13:36
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

MARY_FS,
А какой программой вы собираетесь открывать html-файл?
Ответить с цитированием
  #3 (permalink)  
Старый 21.06.2016, 13:51
Интересующийся
Отправить личное сообщение для MARY_FS Посмотреть профиль Найти все сообщения от MARY_FS
 
Регистрация: 15.06.2016
Сообщений: 10

Dilettante_Pro,
html-файл с отчетом открывает пользователь из проводника.
Ответить с цитированием
  #4 (permalink)  
Старый 21.06.2016, 13:52
Интересующийся
Отправить личное сообщение для MARY_FS Посмотреть профиль Найти все сообщения от MARY_FS
 
Регистрация: 15.06.2016
Сообщений: 10

Dilettante_Pro,
или Вы имели ввиду, в каком браузере?
Ответить с цитированием
  #5 (permalink)  
Старый 21.06.2016, 14:21
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

MARY_FS,
В браузере? А куда указывают ссылки?
Ответить с цитированием
  #6 (permalink)  
Старый 21.06.2016, 16:25
Интересующийся
Отправить личное сообщение для MARY_FS Посмотреть профиль Найти все сообщения от MARY_FS
 
Регистрация: 15.06.2016
Сообщений: 10

Dilettante_Pro,
на локальные текстовые файлы на компьютере. Открываться они должны или в браузере, или лучше в текстовом редакторе.

Последний раз редактировалось MARY_FS, 21.06.2016 в 16:29.
Ответить с цитированием
  #7 (permalink)  
Старый 21.06.2016, 16:47
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от MARY_FS Посмотреть сообщение
Dilettante_Pro,
на локальные текстовые файлы на компьютере. Открываться они должны или в браузере, или лучше в текстовом редакторе.
Если в текстовом редакторе, то какой JS? Visual Basic.
Локальные текстовые? А они чем открываются?
И что - это все только на одном компьютере? Или они переносятся и на другие с сохранением структуры размещения - чтобы ссылки не нарушались?
Ответить с цитированием
  #8 (permalink)  
Старый 21.06.2016, 17:24
Интересующийся
Отправить личное сообщение для MARY_FS Посмотреть профиль Найти все сообщения от MARY_FS
 
Регистрация: 15.06.2016
Сообщений: 10

Dilettante_Pro,
я имела ввиду javascript. Я формирую отчет в HTML по результатам анализа текстовых файлов
<a href=\"file://localhost/" + File + "\" target=\"_new\" >" + File + "</a>
Сформировала ссылки на локальные файлы. они открываются в браузере, но на начале. А мне нужно чтобы они открывались на том месте, где нашлась сигнатура. В лучшем варианте - в текстовом редакторе. Все это мне надо сделать на HTML, я так полагаю, надо вставить код на javascript
Ответить с цитированием
  #9 (permalink)  
Старый 22.06.2016, 17:34
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от 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-');
        }

Последний раз редактировалось Dilettante_Pro, 22.06.2016 в 17:48.
Ответить с цитированием
  #10 (permalink)  
Старый 23.06.2016, 14:56
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

MARY_FS,
Получился работоспособный вариант, правда, немного тормозной.
Текстовый файл оформлять в виде
<!DOCTYPE html> 
<html>
<head>
<script type="text/javascript">
  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, " "));
           var t1 = document.getElementById('rest'),
           t2 = document.getElementById('cont'),
           scr,
           buffer = t1.value.split("\n"),
           signfound = false;
           for (var i = 0; i < buffer.length; i++) {
              if (buffer[i].indexOf(signature) > 0) { signfound = true };
              t2.value += buffer[i] + "\n";
              if (signfound) {
                scr = t2.scrollHeight - 40;
                signfound = false;
              }
          }
          t2.scrollTop = cr;
        } 
    };
</script>
</head>
<body onload=" getParameterByName('sign')">
<textarea id="rest"  style="display:none">
Текст из исходного текстового файла
.....
.....
</textarea>
<textarea id="cont" rows="40" style="width:100%;height:100%">
</textarea>
</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие локального файла MARY_FS Events/DOM/Window 5 15.06.2016 14:54
Как создать ссылку в нужном месте через UserCSS или UserJS DenisLp Opera, Safari и др. 0 02.02.2015 07:03