Здравствуйте, уважаемые специалисты. Очень расчитываю на Вашу помощь и поддержку.
Вот код
topmenu = (function() {
return {
filesload: function(evt,func)
{
var reader = new FileReader();
var files = evt.target.files;
reader.onload = function(e)
{
func(e.target.result,files[0]);
}
reader.readAsArrayBuffer(files[0]);
},
replace: function(s,e)
{
this[s](event,e);
}
}
}());
Если вызвать так, то работает и в опере и хром и файрфоркс
topmenu.sub(document.getElementById("inpField"),"change",function(e)
{
topmenu.filesload(e,function(s)
{
alert(s);
});
});
А так только в хром и опере
topmenu.sub(document.getElementById("inpField"),"change",function(e)
{
topmenu.replace.call(topmenu,"filesload",function(u,f)
{
alert(u+" = "+f.name);
})
});
Файр фокс выдает event is not defined
Вопрос 1) почему? и как поправить?
Вопрос 2) Как я могу вернуть e.target.result, чтобы потом их обработать? Я так понимаю причина в onload.
Вопрос 3) И последний вопрос касательно инкапсуляции. Какую роль играют в этом коде function(s){}(v) s и v?