| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Объект, вызвавший функцию |
| Автор: smartov 2.7.2007, 14:26 | ||
Есть такая модель. Есть форма. У неё по событию submit вызывается какая-то функция.
Внимание вопрос Можно ли внутри той функции (my_function) получить ссылку или id формы, по сабмиту которой она вызвалась. Нужно это потому, что хотелось бы не передавать все время в функцию this как ссылку на форму. |
| Автор: Zeroglif 2.7.2007, 15:24 | ||
Низзя, потому как вызов my_function() прописан в теге, то есть он живёт внутри ещё одной "невидимой глазу" функции (не имеет значение , как и когда она создаётся), которая при возникновении события знает значение this и значение event. Она знает, а my_function не знает, отсюда необходимость передавать в неё аргументы. |
| Автор: vasac 2.7.2007, 15:26 |
| В IE через event, в Gecko, видимо, никак. |
| Автор: Zeroglif 2.7.2007, 15:29 |
| smartov, а чего ты прикипел-то к этому обработчику в теге, сделать форма.onsubmit = функция и будет нужный this или нельзя? Добавлено через 5 минут и 54 секунды Правильное уточнение, а то я обобщил про идентификатор event в inline-обработчике, IE может с event выкрутиться, единственное, не проверял, будет ли srcElement всегда вести на форму, как бы мы её не засабмитили. Кто-нибудь знает? |
| Автор: smartov 2.7.2007, 18:12 | ||||
Zeroglif, хочется вместо
писать просто
и чтобы все работало. По идее я догадываюсь что такое неосуществимо, но мало ли... vasac, поподробнее, пожалуйста. |
| Автор: AKS 2.7.2007, 18:38 | ||||
Решили подловить кого-нибудь? ;) |
| Автор: Zeroglif 2.7.2007, 19:35 | ||||
просто не уверен на 100% в ответе, за сим сильно ищу сильно уверенных... , никого я не ловлю, даже бабочек... В IE event - свойство window, то есть есть из функции можно обращаться к соответствующему идентификатору и нет надобности передавать event в функцию аргументом. В gecko же event передаётся аргументом в ту функцию, что автоматом создаётся в теге и дальше двигается уже руками в любое место, в твоём случае передаётся в функцию my_function:
Писать ручками event нам не подходит, т.к. аргументы по условию исключены (мы даже от this отказались), тогда AKS-молодец впомнил про свойство caller (увы, уже давно deprecated, но пока ещё работает), с помощью которого мы можем из тела функции my_function выйти на функцию, созданную в теге, а уже у этой функции получить её аргументы, вернее, один аргумент - ссылку на event. Получив event, можно определить элемент, на котором "зажглось событие", с помощью свойства target(gecko) или srcElement(IE), получится что-то вроде:
Я во всей этой затее вижу кучу узких мест (особенно, когда видишь из-за чего весь сыр-бор) и или оставил бы this в покое, или по-другому бы навешал обработчики... |
| Автор: vasac 2.7.2007, 19:37 |
| AKS, ну вот PS. А вот и про caller ответили, прежде чем я спросил ) |
| Автор: AKS 2.7.2007, 20:10 |
Показалось что беседа принимает философский оттенок, вот и "сунулся" с этим caller'ом. А мне просто сразу вспомнилась тема о событиях (точнее фрагмент другой темы на dklab), о возможности переопределения св-в объекта Event (созданного методом createEventObject). Вот отсюда и вопрос... |
| Автор: smartov 3.7.2007, 10:02 |
| Zeroglif, ясно. Да, много недоработано еще в javascript Добавлено через 1 минуту и 4 секунды Спасибо всем, тогда. Теа закрыта. Проще оставить this как есть |