LINUX.ORG.RU

Grab data from external local file in JS

 


0

1

В локальном каталоге имеется .html файл, ряд файлов содержащих text/plain. Файл .html отображается браузером (Chromium-based), также содержит JS < script > элементы.

Имеется ли какая - нибудь потенциальная возможность вытянуть из текстовых файлов данные для использования в < script > элементах ?

Сейчас файлы отображаются как iframe, приходится вручную копировать содержимое и вставлять в textarea на странице (для дальнейшей обработки).

Конечно же, выбор файла/drag’n’drop (< input type=«file» >) не подходят, без прочих библиотек (e.g читай query).

без прочих библиотек (e.g читай query)

Запросить файлы по имени через XMLHttpRequest или fetch?

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1 )
Ответ на: комментарий от Deleted

XMLHttpRequest или fetch

В том - то и проблема что файлы локальные и не получается это сделать через них (по крайней мере у меня), хромой ругается и плюется.

Возможно есть принципиально иной взгляд на задачу ? Текстовые файлы менять не могу, расширение json к ним прикрутить тоже нельзя.

abdul0v ()
Ответ на: комментарий от abdul0v

В том - то и проблема что файлы локальные и не получается это сделать через них (по крайней мере у меня), хромой ругается и плюется.

Сформулируй нормально. Что значит локальные, что значит «ругается и плюется»?

anonymous ()
Ответ на: комментарий от abdul0v

хромой ругается и плюется

Firefox тоже. Такая у них политика безопасности. Специально палки в колеса вставляют)

Возможно есть принципиально иной взгляд на задачу ?

Либо сервер поднять либо билдить. Я как-то упарывался, писал скриптик, который берет текстовые файлы, оборачивает в js-ку и кладет рядом. Дальше подключаешь эту js-ку через тег script.. Но лучше конечно серверок на локалхосте. А еще лучше на VDS-ке

Deleted ()
Ответ на: комментарий от abdul0v

ЗЫ Drag'n drop рано со счетов списываешь. На страницу можно дропнуть целую папку со всеми твоими файликами и таким образом получить возможность считать их все за раз (хотя может и тут есть какие-то ограничения для локального ипользования)

Deleted ()
Последнее исправление: Deleted (всего исправлений: 2 )
Ответ на: комментарий от anonymous

Раньше можно было. Удобно на самом деле

Deleted ()
Ответ на: комментарий от Deleted

Такая у них политика безопасности.

Причем и там и там это фиксится настройками/флагами/аргументами запуска, но, конечно же все должно работать на стоке.

Либо сервер поднять

Ну, тогда задачи бы и не стояло вовсе

либо билдить

Хромого ?

берет текстовые файлы, оборачивает в js-ку и кладет рядом. Дальше подключаешь эту js-ку через тег script

Я думал об этом, но, к сожалению, редактировать внутри файла я точно не могу, расширение на json/js наверное смогу поменять, ну так при подключении безе функций это ничего не даст ведь ?

Но лучше конечно серверок на локалхосте. А еще лучше на VDS-ке

Низя (

abdul0v ()
Ответ на: комментарий от Deleted

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

abdul0v ()
Ответ на: комментарий от abdul0v

Билдить текстовые файлики) Кладешь рядом скриптик: при изменении твоих файлов запускаешь скриптик — он считывает твои файлики и выплевывает data.js с их содержимым. И так каждый раз при изменении

Deleted ()
Ответ на: комментарий от Deleted

он считывает твои файлики и выплевывает data.js с их содержимым

i.e меняет расширение что ли ? Или к их содержимому что - то еще дописывает ?

abdul0v ()
Ответ на: комментарий от abdul0v

И что мешает при запуске браузера запускать небольшой веб-сервер на этом же устройстве? Т.е. какой-то скрипт рядом вы рассматриваете как запускать, а веб-сервер нельзя? Что-то не так.

anonymous ()
Ответ на: комментарий от abdul0v

Ну, например, дописывает

DATA1 = `
Тут содержимое файла
`;

DATA2 = `
И.т.д
`

При должной сноровке можно такой скрипт на bat/shell написать и вывести ярлык на рабочий стол для удобства испольдования

Deleted ()
Ответ на: комментарий от anonymous

Через пару лет он может и дорaстет до postgres на своем сервере )

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1 )
Ответ на: комментарий от anonymous

То что браузер запускает пользователь которому ничего кроме открытия .html странички оным, не интересно. Вы так пишите будто я сам себя обмануть пытаюсь придумывая задачи (условия) на ходу.

какой-то скрипт рядом вы рассматриваете как запускать, а веб-сервер нельзя?

Я не рассматривал запуск скрипта, я говорил что расширение файлов может быть изменено по-умолчанию, i.e они изначально рядом с расширением js/json будут лежать но с plain/texe внутри.

abdul0v ()
Ответ на: комментарий от anonymous

Проще на своем сервере и выдать ссылку юзеру. Т.к. твой суперкреатив когда-то обязательно потребует обновления, а звставить юзера скачать, распаковать в новую папочку, вытащить ярлык с index.html — задача непосильная для подавляющего большинства людей на планете. Впрочем, можно же собрать setup.exe..

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1 )
Ответ на: комментарий от Deleted

Можно - то

Проще это

Почему не - то и так

Стало ясно, альтернативных вариантов воз и телега, мне бы по поводу

Имеется ли какая - нибудь потенциальная возможность вытянуть из текстовых файлов данные для использования в < script > элементах ?

чего услыхать. Категорически нет?

abdul0v ()
Ответ на: комментарий от Deleted

ряд файлов содержащих text/plain

Я так понял, они у него откуда то обновляются, иначе зачем все это? Еще непонятно, почему он решил эту задачу решать через браузер.

anonymous ()
Ответ на: комментарий от anonymous

они у него откуда то обновляются

Подскажу, так и быть. Text/plain файлы обычно открывают через $EDITOR, там можно внести изменения и даже сохранить таковые. Пользователь открывает файлы, редактирует их.

abdul0v ()
Ответ на: комментарий от anonymous

почему он решил эту задачу решать через

Браузер может в JS и в google charts.

В файлах собственно лежит data для построения line chart например.

abdul0v ()
Ответ на: комментарий от abdul0v

Пусть редактирует прям в браузере, храни данные в localstоrage. И обеспечь возможность импортировать/экспортировать в json файл, при необходимости

Deleted ()
Последнее исправление: Deleted (всего исправлений: 1 )
Ответ на: комментарий от Deleted

Браузер выполняет конкретные функции, демонстрацию графика, фактически. Вот текстовый редактор тоже, обеспечивает возможность редактирования файлов. А файлы они на то и файлы чтобы в них информацию хранить/через них ее резервировать/избыточно хранить и т.д.

anonymous ()
Ответ на: комментарий от anonymous

Еще непонятно

Когда вам непонятно, кто - то может вам что - то объяснить и возможно вам станет понятнее, в таком случае он оказал вам услугу/ сделал одолжение, называйте это как хотите, суть останется неизменной.

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

anonymous ()

Я (OP), просто уверен что есть возможность, но о ней знают 1.5 человека так как она сильно «хитрая».

anonymous ()

Опиши весь кейс нормально. С подробностями. Откуда ты эти html берешь? Ты их сам генеришь или вы воруете html не подконтрольного тебе сервака? Как-то ты пытаешься решать задачу через жопу. Вангую, что тебе надо скраппер писать, а не из чужих html на свою страничку тащить графики, это ж идиотизм, типичный пост-совок

menangen ★★★★★ ()
Ответ на: комментарий от Deleted

Так все себя браузеры ведут. Согласно спецификации.

tz4678 ★★ ()
Ответ на: комментарий от tz4678

Объект FileReader позволяет веб-приложениям асинхронно читать содержимое файлов (или буферы данных), хранящиеся на компьютере пользователя, используя объекты File или Blob, с помощью которых задается файл или данные для чтения.

Объекты File можно получить через объект FileList, который возвращается как результат при выборе файлов пользователем с помощью элемента , через drag and drop из объекта DataTransfer, или с помощью mozGetAsFile(), метода доступного в API элемента HTMLCanvasElement.

anonymous ()
Ответ на: комментарий от Miguel

Тред почитай, он упорот.

Есть свое видение о том, как должно все быть устроено, и о «тайных гуру», которые могут сделать это вопреки стандартам.

О том, что задачу он решает через жопу - говорить не хочет, считает что выбрал верное решение, советовать ему не нужно кроме того, что он хочет слышать.

Я обычно на людей не набрасываюсь, сам не очень люблю форумы за такое отношение, но тут полная дичь. И я был бы рад объяснить ОПу, в чем она заключается, но он не будет слушать. Он уверен, что «тайное решение» есть.

Ну и проблема вообще не в нем, а в том кто ему доверил такую задачу. Кто ее сформулировал в тз - вопрос другой, надеюсь не автор треда сам себе. :)

anonymous ()
Ответ на: комментарий от anonymous

Если дословно, он хочет условно говоря reader.readAsText(«/data/plain.txt») и не понимает почему это нельзя сделать ^^

anonymous ()

Что бы через ajax ты мог парсить файлы тебе проще всего поднять сервер - это 1 строка в консоли.

Niokva ()

Почему тебе не подходит чтение файла через input и перетаскивание? и причем тут прочие библиотеки(о которых ты упомянул)?

Niokva ()
Ответ на: комментарий от Niokva

можно через nginx:

server {
    listen 127.0.0.1:6667;
    root /path/to/data;
    location / {
        index index.htm index.html;
    }
}
# Проверяем конфиги
$ sudo nginx -t

$ sudo systemctl restart nginx
tz4678 ★★ ()
Ответ на: комментарий от tz4678

Я обычно ноду использую для этих целей там есть несколько пакетов, название не помню. Что-то вроде static-server и т.п.

Niokva ()
Ответ на: комментарий от Niokva

Он написал, что сервер нельзя поднять.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.