Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отследить момент обновления textarea 
:(
    Опции темы
Jin X
Дата 19.7.2015, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 5.3.2004

Репутация: нет
Всего: 1



Читаю файл id=loadfile в textarea id=doms, при этом в span id=loadingtext записывается инфа о процессе загрузки. После загрузки надпись "Файл успешно прочитан!" появляется на 2 секунды, а затем исчезает (setTimeout).
Но вот беда! Если файл большой, то добавление его содержимого в textarea происходит длительное время (грузится он быстро, именно обновление textarea идёт долго). Т.о., если это добавление будет длится 1.5 секунды, то надпись появится всего на 0,5 секунды. А если 2 секунды и более, то она вообще не появится.
Надо, чтобы setTimeout запускался не сразу после присвоения getEl('doms').value = file.target.result;, а после того, как textarea обновится. Как это сделать?
Код
function load_from_file() {

    function msg(s, t, green) {
        var el = getEl('loadingtext');
        if (green) el.style.color = '#008000'; else el.style.color = '#900';
        el.innerHTML = s;
        if (t) setTimeout("getEl('loadingtext').innerHTML = '';", t);
    }
    
    var el = getEl('loadfile');
    if (!el.value) return;
    var file = el.files[0];
    var reader = new FileReader();
    reader.onload = function(file) {
        getEl('doms').value = file.target.result;
        msg('Файл успешно прочитан!', 2000, true);
    };
    reader.onerror = function() {
        msg('Ошибка чтения файла!', 3000);
    };
    msg('Идёт чтение файла, пожалуйста, подождите...');
    reader.readAsText(file);
}

function getEl(id) {
    return document.getElementById(id);
}

--------------------
Бойся своей мечты, ибо она осуществима!
PM MAIL   Вверх
ksnk
Дата 19.7.2015, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Можно поменять сам механизм вывода сообщений пользователю. Выводить их в "бегущую строку" или "всплывающий лог" и убирать только по таймауту после движения мышкой.

А что за textarea? Случайно не текстовый редактор? Может у него свой API есть для таких случаев?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.