Показать сообщение отдельно
  #1 (permalink)  
Старый 16.08.2012, 22:35
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Инкапсуляция, чтение файла и event в firefox
Здравствуйте, уважаемые специалисты. Очень расчитываю на Вашу помощь и поддержку.

Вот код

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?
Ответить с цитированием