Здорово, спасибо большое voraa, рони
На 80% стало ясно что делать В качестве упражнения хочу взять кнопки отсюда и файл ajax https://datatables.net/examples/ajax...ta_source.html всё это прикрутить его к примеры рони и склеить с кодом voraa А то ломал головы все эти дни. Форум не позволяет выдавать кредиты подряд, так бы еще добавил плюсиков Общение - великая вещь |
Цитата:
Если бы можно было с локальными, то и не надо бы было со script возиться. |
Я имел в виду текстовое содержание файла Ajax на вкладке скопировать на диск для вашего примера сскриптом и способ вставить кнопки в ряд
|
Цитата:
А сам файл готовить отдельной утилитой из командной строки, сканируя директорию и собирая в file.dat имена файлов или просто в текстовом редакторе |
Сделал другой вариант. Чтобы читать локальные файлы надо скрипт класть в раздел <head>
<head> <script src=./main.js></script> </head> <body> <input id="read_table" type="file" value='' style="padding: 0px; size: 120px" /> </body> а потроха скрипта упаковать в функцию document.addEventListener('DOMContentLoaded', function () { var fReader = new FileReader(); var readtable = document.getElementById('read_table'); var filename, data, headers; readtable.onchange = function (e) { var file = this.files[0]; //console.log(file); filename = file.name; fReader.readAsText(file); } fReader.onload = function (e) { var text = e.target.result; ... } }) работающий пример с такой упаковкой https://github.com/gfmoore/BackFitCl...ileanalyser.js В этом примере разборка бинарного файла, но логика та же Другой пример здесь https://www.js-tutorials.com/javascr...ascript-html5/ http://js-tutorials.com/demos/read_csv_javascript_demo/ В этом примере много мусора, но главный принцип такой же - упаковать скрипт в функцию. (Интересно, в описании про мусор пишут а про упаковку скрипта в функцию нет. Когда весь Интернет просто криком исходит - как в простом js и html читать локальные файлы) Остались бантики - стили, форматирование таблицы, прикручивание кнопки для вызова поля с графиками и картой Интересно, что структурно решение выглядит так же как на питоне Логика везде одинаковая - здравый смысл - а синтаксис может быть какой угодно |
Цитата:
document.addEventListener('DOMContentLoaded', function () { то это совершенно не обязательно. Можно и без этого <head> </head> <body> <input id="read_table" type="file" value='' style="padding: 0px; size: 120px" /> <script> var fReader = new FileReader(); var readtable = document.getElementById('read_table'); var filename, data, headers; readtable.onchange = function (e) { var file = this.files[0]; //console.log(file); filename = file.name; fReader.readAsText(file); } fReader.onload = function (e) { var text = e.target.result; ... } </script> </body> Сработает точно так же Чтение файла через <input type=file> - это обычный способ. Только пользователь должен каждый раз указывать файл. И не получится прочитать файл по имени, указанному где то в программе или какой-нибудь таблице. |
voraa,
Вы правы, действительно в вашем коде файл читается, я проверил. Когда я писал fitplotter -- ссылка в певом сообщении темы -- у меня в начале постоянно вылезала ошибка нечтения. Возможно из-за того что в теле скрипта был вызов другого скрипта с диска, который занимается разборкой двоичного файла. Заработало только после упаковки в ф-цию. |
Просто всякие document.getElementById('read_table');
нормально срабатывают только тогда, когда браузер уже распарсил HTML текст и знает, что это за элемент с id='read_table'. Когда мы помещаем скрипт в конце body, все элементы уже известны и DOM дерево построено. Если поместить этот скрипт вначале, то это функция не сработает, т.к этого элемента еще нет. Но document.addEventListener('DOMContentLoaded', function () {}) говорит - выполни эту функцию, когда произойдет событие "Содержимое DOM готово", т.е все распарсено, все элементы известны. |
Цитата:
Будет ли способ описанный выше работать при однократном нажатии на простую кнопку в внешней таблице без диалога с пользователем? Или вместо простой кнопки в строку таблицы надо прописывать обязательно <input type=file> чтобы юзер обязательно сам нажимал на input ? И после нажатия input всегда появляется диалог? В моем случае диалог не нужен потому что имя файла и путь к нему уже известны, можно читать сразу. |
Цитата:
Иначе скрипты читали бы любые файлы на компьютере пользователя, и отправляли бы их куда-нибудь. |
Часовой пояс GMT +3, время: 09:05. |