Чтение текстового файла из Javascript

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Второй день бьюсь над проблемой, мозг уже замылился
Из хрома пытаюсь сделать сабж по инструкции
Код:
var chosenFileEntry = null;

chooseFileButton.addEventListener('click', function(e) {
  chrome.fileSystem.chooseEntry({type: 'openFile'}, function(readOnlyEntry) {

    readOnlyEntry.file(function(file) {
      var reader = new FileReader();

      reader.onerror = errorHandler;
      reader.onloadend = function(e) {
        console.log(e.target.result);
      };

      reader.readAsText(file);
    });
    });
});

Cобытие click вызывается, диалог выбора файла тоже, а вот openFile - нет
Ладно, пробую по другой инструкции
Код:
chooseFileButton.addEventListener("change", doOpen, false);
function doOpen(evt) {
            var file = evt.target.files[0],
            
                reader = new FileReader();
                reader.onload = function() {
                console.log(this.result);


                
            };
          
            reader.readAsText(file);
            
          }
После выбора файла в диалоге doOpen не вызывается тоже
Самое страннное, что вторая конструкция кажется работала, но сейчас напрочь отказывается
Что я делаю не так?
 

gastse

Участник
Сообщения
236
Реакции
29
Меня вот эта строка смущает "var file = evt.target.files[0],". Запятая в конце стоит вместо ;
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Да поправил конечно, но дело явно не в этом. Этот кусок кода не вызывается вообще
 

AZ-597

👹
Сообщения
578
Реакции
230
Чёта такое я городил для одной программки в песочнице;]=

JavaScript:
myFileInput.addEventListener("change", handleFiles, false);

function handleFiles() {
  readFile(this.files);
}

function readFile(input) {
  let file = input[0];
  let reader = new FileReader();

  reader.readAsText(file, "UTF-8");

  reader.onload = function () {
    let textData = reader.result;
    console.log(textData);
  };

  reader.onerror = function () {
    console.log(reader.error);
  };
}
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Неа даже вот так не работает :(
Код:
var opensel = document.getElementById("opensel");
    opensel.style.display = "none";  
    opensel.addEventListener("change", function () {
            var file = this.files[0];
            console.log(file);
             var   reader = new FileReader();
                reader.onerror = function () {
                console.log(reader.error);                   
                };
                
    
                
            reader.onload = function() {

                   localStorage["localbase"]=reader.result;
                 console.log(reader.result);
                };    
                
            

            reader.readAsText(file, "UTF-8");
            
          }, false);
opensel.click();
Может изза того что из распакованного расширения? :(
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835
А выбрать файл пробовал?:) Он его содержимое в консоль пишет
Не пишет по умолчанию.
Но ваш код все таки работает - если поставить точку останова на "change" то останавливается и тогда уже и в консоль пишет
А вот на моем останавливаться не хочет :(
1619094214694.png
 

Mallard

Свинский
15 лет на форуме
Сообщения
2 333
Реакции
684
HTML:
<input type="file" class="myloadfile">
JavaScript:
window.addEventListener('load', function(){

    let btnLoad = document.querySelector('.myloadfile');
    btnLoad.addEventListener('change', doOpen)

    function doOpen(e) {
        let file = e.target.files[0]
        console.log(file.name)
        reader = new FileReader()
        reader.readAsText(file, "UTF-8");
        reader.onload = function () {
            let textData = reader.result;
            console.log(textData);
        };
    }

});
 

AZ-597

👹
Сообщения
578
Реакции
230
Неа даже вот так не работает :(
Код:
var opensel = document.getElementById("opensel");
    opensel.style.display = "none";
    opensel.addEventListener("change", function () {
            var file = this.files[0];
            console.log(file);
             var   reader = new FileReader();
                reader.onerror = function () {
                console.log(reader.error);                 
                };
              
  
              
            reader.onload = function() {

                   localStorage["localbase"]=reader.result;
                 console.log(reader.result);
                };  
              
          

            reader.readAsText(file, "UTF-8");
          
          }, false);
opensel.click();
Может изза того что из распакованного расширения? :(
1619096091006.png

А не надо ли приподнять readAsText?
Ну и всё таки надо с текстом экспериментировать, а не с png '))')
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835
А не надо ли приподнять readAsText?
Ну и всё таки надо с текстом экспериментировать, а не с png '))')
Да нет без разницы что с текстом что без :( и порядок тоже не важен
Может все таки проблема в том, что вызывается из попапа расширения? %8
 

AZ-597

👹
Сообщения
578
Реакции
230
Впрочем, всё подряд открывает как текст и не кашляет)
Порядок строк в данном случае тоже неважен, это да...
Из попапа расширения вызывается? Ну может быть, конечно, надо проверять.
 

Mallard

Свинский
15 лет на форуме
Сообщения
2 333
Реакции
684
Ребят, ниасиливаю, что у вас не работает. Выложил же полностью рабочий код. Или вас где-то это хитро вызывается?
 

AZ-597

👹
Сообщения
578
Реакции
230
Ребят, ниасиливаю, что у вас не работает. Выложил же полностью рабочий код. Или вас где-то это хитро вызывается?
Да, _MBK_ всю эту красоту заводит из экстеншена и тут возникает вопрос корректно ли.
Я лично расширений для браузеров не писал. Может у них там есть какие-то ограничения на доступ?
 

AZ-597

👹
Сообщения
578
Реакции
230
Так! Хром довольно старый у вас — спецификация сейчас в стадии рабочего черновика. Поддержка этого API доступна начиная с хром 7. Вопрос какая версия хрома у вас?
1619097727004.png
 

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
Топикстартер
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Похоже что так и вышло
Попробовал не из попапа а из обычной страницы - все работает
Всем спасибо!