Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   File API Чтение и обработка локального файла (https://javascript.ru/forum/events/52682-file-api-chtenie-i-obrabotka-lokalnogo-fajjla.html)

Uncle_Co 31.12.2014 18:01

File API Чтение и обработка локального файла
 
Я чего-то не понимаю в обработке событий, видимо. Задача такая. Нахожу локальный файл .svg через <input...>. Затем загружаю его в виде субдокумента с помощью <object...>. Затем обрабатываю его, как я думаю, после загрузки.
Если ставлю alert(...). перед ....add.EventListener("load".....), то все срабатывает прекрасно. Файл успевает подгрузиться и обработчик его обрабатывает. Если alert(...) нет, то обработчик не получает файл и ничего не работает. Вот код:

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xlink="http://www.w3.org/1999/xlink">
<meta charset="utf-8">
<head>
<title>sborka_14-12-31</title>
</head>
<body>
<p>sborka_14-12-31</p>

<input type="file" onchange="LoadFile()"/>
<object class="Shema" data="" width="1280" height="1024" type="image/svg+xml"></object>

<script id="script" language="javascript" type="text/javascript" src="ANIMATOR_14-12-29.js">
//содержит функции обработки графики
</script>

<script id="script" language="javascript" type="text/javascript">
function LoadFile()
{
var infile = document.querySelector('input[type=file]').files[0];
var elm = document.querySelectorAll('.Shema')[0];
if(elm.data != undefined) elm.data=infile.name;

alert(' == Анимация? ==\n'+elm.data);
//без задержки загрузка не происходит

document.getElementsByTagName('object')[0].addEventListener("load", ANIMATION(elm.contentDocument), false);
}
</script>

</body>
</html>

Уже голову просто сломал. Что я тут не понимаю? Как запустить обработчик ANIMATION(...) точно после завершения загрузки файла?


Часовой пояс GMT +3, время: 13:24.