Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Инкапсуляция, чтение файла и event в firefox (https://javascript.ru/forum/events/30819-inkapsulyaciya-chtenie-fajjla-i-event-v-firefox.html)

platedz 16.08.2012 23:45

Спасибо за ответы. В данном случае проблема не велика. Т.е. все необходимые действия я могу выполнить и так. Но мне было бы удобнее получить данные, чтобы впоследствии с ними работать.
Больше всего, честно говоря, интересуют вопрос 1 и 3

vadim5june 16.08.2012 23:49

Цитата:

Сообщение от platedz
Какую роль играют в этом коде function(s){}(v) s и v?

s-формальный параметр
v -фактический
рекомендуется писать так (function(s){})(v)

platedz 17.08.2012 00:02

Цитата:

Сообщение от oneguy (Сообщение 198145)
Вы ведь повесили обработчик на onchange. Он по идее должен срабатывать при изменении пользователем значения файлового поля, поэтому он как раз должен быть асинхронным.

Может быть следует использовать другой обработчик, который позволит дождаться загрузки чтения файла. Подскажите, пожалуйста.

Цитата:

Сообщение от oneguy (Сообщение 198145)
В Фаерфоксе, возможно, не срабатывает потому, что вы использовали глобальную переменную event, а нужно брать событие, как аргумент в обработчике?

А как это делается?

Цитата:

Сообщение от oneguy (Сообщение 198145)
У вас в коде ведь использован такой шаблон, без параментров: function(){}()

Я честно говоря совсем недавно познакомился как и инкапсуляцией так и с замыканием. Но сколько не читал на эту тему, так и не понял, для чего использовать данные параметры, что и куда они возвращают. Буду крайне признателен если просвятите, особенно на каком-нибудь простом примере.

platedz 17.08.2012 00:04

Цитата:

Сообщение от vadim5june (Сообщение 198151)
s-формальный параметр
v -фактический
рекомендуется писать так (function(s){})(v)

Разъясните поподробнее пожалуйста, буду очень благодарен.

vadim5june 17.08.2012 00:10

Цитата:

Сообщение от platedz (Сообщение 198161)
Разъясните поподробнее пожалуйста, буду очень благодарен.

(function(s){alert(s)})(5);//5
объявляем функцию и сразу выполняем

vadim5june 17.08.2012 00:19

Цитата:

Сообщение от platedz
topmenu.replace.call

А зачем Вам этот метод нужен?

platedz 17.08.2012 00:21

Цитата:

Сообщение от vadim5june (Сообщение 198163)
(function(s){alert(s)})(5);//5
объявляем функцию и сразу выполняем

Т.е. если я правильно понимаю в данном примере (function(s){alert(s)})(v) мы передаем данные из v в s. Так как видимо передать их из вне мы наверное не можем, учитывая что var s = 5; (function(s){alert(s)})() не работает.
Я все правильно понимаю???

platedz 17.08.2012 00:23

Цитата:

Сообщение от vadim5june (Сообщение 198166)
А зачем Вам этот метод нужен?

Для расширения кругозора. Учусь, так сказать. Только он почему-то не передает event в файрфокс. А как поправить не знаю.

vadim5june 17.08.2012 00:26

Цитата:

Сообщение от platedz (Сообщение 198167)
Т.е. если я правильно понимаю в данном примере (function(s){alert(s)})(v) мы передаем данные из v в s. Так как видимо передать их из вне мы наверное не можем, учитывая что var s = 5; (function(s){alert(s)})() не работает.
Я все правильно понимаю???

Выполняем функция с параметром v
основной смысл что мы не создаем на глобальном уровне имени функции
(не засоряем)
с именем так бы выглядело
function f(s){alert(s)};
f(5);

vadim5june 17.08.2012 00:31

Цитата:

Сообщение от platedz (Сообщение 198168)
Для расширения кругозора. Учусь, так сказать. Только он почему-то не передает event в файрфокс. А как поправить не знаю.

он здесь this[s](event,e);
не определен-но я так и не понял его смысла-ведь он делает тоже что и
filesload только более сложным образом?
Или еще что то?


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