Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Всем привет! Чтобы понятно описать мою задачу, придется написать много букв :) Есть у меня js-функция, которая получает все html-формы на странице (с учетом какого-то критерия), вешает на них сабмит. Дальше при отправке формы автоматически проверяется заполненность обязательных полей. И если все нужные поля заполнены, форма отправляется в ajax-файл. В какой конкретно файл отправлять форму определение происходит тоже автоматически на основе данных формы. Идейно, все это выглядит так: html : Код: html 1. 2. 3. js : Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Ну и дальше в formSubmit методом $.ajax форма отправляется на сервер в ajax-файл, путь к которому генерится на основе данных из параметров module и handler. И вот в formSubit в success и error мне нужно запустить функцию "постсабмитной" обработки, которая для каждой формы может быть своя. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. Т.е. по идее, имя этой функции (функциЙ) нужно как-то передать в formSubmit (как вариант, в тех же submitParams) а потом вызвать эту функцию по переданному имени. Но насколько я помню из классического JS, использование eval() считалось небезопасным. Хотя JS сам по себе небезопасный, имхо, т.к. он на стороне клиента. Какие есть еще идеи и варианты решения задачи, чтобы свести угрозы безопасности к минимуму или вообще их обойти? Заранее благодарю! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2016, 23:44 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
urukhay, угрозы безопасности чего? :)) Не знаю, может Ваш случай не такой, но всё же расскажу как я обычно вешаю обработчики на такие формы: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. P.S. Ну ладно... приврал немного. Я никогда так success и error не вешал на формы (только сам ajax так подвешивал, а обработчики успеха/провала обычно в внутри функций перебирал разными switch...case или if..else). Но согласитесь, идея классная в примере ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 00:33 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Програмёр, за использование eval - я б голову сворачивал, 1 это медленно, 2 безграмотно. 3 от ajax стоит отказываться , есть прекрасная замена websocket ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 00:42 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадя, прямо-таки отказываться? Почему? Всегда его использовал, никаких проблем не было. Не исключаю, что появилось что-то более современное и эффективное, о чем я не знаю. Если не сложно, можно тезисно? А более подробно я уже сам почитаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 03:22 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Програмёр , идея интересная, но у меня почти тоже самое )) Единственное, я сделал вызов недефолтных обработчиков по другому механизму. Но объяснить мне это будет сложно, тогда мне придется особенности своего движка тут рассказывать )) А метод serialise в Вашем случае что делает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 03:37 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Я, конечно, не хаккер, но мне кажется вот сюда: Код: javascript 1. можно подсунуть какой-то вредоносный код, при желании Почитал, советуют делать запуск функций через объект. Грубо говоря: Код: javascript 1. 2. 3. 4. 5. 6. По такому принципу я у себя и реализовал, но за информацию спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 03:41 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадяПрограмёр, за использование eval - я б голову сворачивал, 1 это медленно, 2 безграмотно. 3 от ajax стоит отказываться , есть прекрасная замена websocket 1. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. На handler2 теряется 0.6 секунды (выводит 10239 против 9689) На handler теряется 0.14 секунды (выводит 147 против 8) Замечаете насколько незначимыми эти затраты являются на сложных функциях (как и на простых... в процентах то +150%, а во времени всего 0.14 секунды). Затраты связаны с разбором кода, его интерпретации в выполняемый и т.д. То есть для 1000 000 итераций "замедление" будет приблизительно одинаковым и будет измеряться в милисекундах, если не толкать туда километровый код. 2. Это предположение такое? Даже комментировать не хочу, пока не услышу аргументацию внятную. 3. Жду аргументов эммм..... "Пирамида Грэма".... помните? :)) По всем трём пунктам жду беседу, которая будет конструктивной, а не на основе предположений и субъективного видения ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 04:09 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
urukhay Програмёр , идея интересная, но у меня почти тоже самое )) Единственное, я сделал вызов недефолтных обработчиков по другому механизму. Но объяснить мне это будет сложно, тогда мне придется особенности своего движка тут рассказывать )) А метод serialise в Вашем случае что делает? Форму в строку параметров переводит. Кстати... забыл упомянуть, что мой код файлы не отправляет. Но думаю Ваш тоже не отправляет, потому не страшно... Для файлов надо отдельную ветку кода пилить, или разные ajaxForm подключать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 04:12 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
urukhayЯ, конечно, не хаккер, но мне кажется вот сюда: Код: javascript 1. можно подсунуть какой-то вредоносный код, при желании Почитал, советуют делать запуск функций через объект. Грубо говоря: Код: javascript 1. 2. 3. 4. 5. 6. По такому принципу я у себя и реализовал, но за информацию спасибо! Джаваскрипт сам по себе вредоносен ))) Он открыт и выполняется на клиенте. Если в этот джаваскрипт кто-то что-то всунуть умудрится, то никакие защиты кроме обфускации Вас не спасут. Ну а так да... если обфусцируете код js, то метод вызова через объект станет безопаснее, чем напрямую. P.S. Но разобраться в обфусцированном коде не то же самое, что в него что-то вклинить. Вклинить в разы проще. Например сдвинув код на одну строку ниже и выполнив первой строкой всё, что хочется :) Потому и обфускация - это защита от лентяя, которому сложно пару клавиш нажать. Это не hex кода с точками входа, когда хрен разберёшься что где, откуда начинается, а каждая правка грозит фатальной ошибкой отсутствия операции или её неверным вызовом :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 04:19 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
urukhayвадя, прямо-таки отказываться? Почему? Всегда его использовал, никаких проблем не было. Не исключаю, что появилось что-то более современное и эффективное, о чем я не знаю. Если не сложно, можно тезисно? А более подробно я уже сам почитаю. https://learn.javascript.ru/websockets ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 05:21 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Програмёр, ну то, что медленная ты сам посчитал, соглашусь, что в данном случае медленность не критична, но факт :) -то, что не безопасна, все твердят, но ст воимо доводами соласен, безграмотна-потому как есть другой способ вызвать Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. это , конечно, не совсем , но принцип показан. Код: javascript 1. время выполнения меряется так Код: javascript 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 05:49 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадя Код: javascript 1. А теперь то же самое только не засоряя глобальный объект (window)? Вот мой подход не засоряет, всё делая в локальной области видимости. Это и было причиной такого вызова (в первой версии ответа написал через window, но посчитал такой подход плохим и переписал). Можем обсудить почему не следует засорять глобальную область видимости, но надеюсь Вы со мной согласитесь и нам не придётся эту тему поднимать :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 05:55 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадяот ajax стоит отказываться , есть прекрасная замена websocket это совсем не замена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 09:41 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Изопропилвадяот ajax стоит отказываться , есть прекрасная замена websocket это совсем не замена П.1 начала флейма выполнен. Вадя произнес 'заявление' )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 09:47 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
авторА теперь то же самое только не засоряя глобальный объект (window)? Вот мой подход не засоряет, всё делая в локальной области видимости. Это и было причиной такого вызова (в первой версии ответа написал через window, но посчитал такой подход плохим и переписал). Можем обсудить почему не следует засорять глобальную область видимости, но надеюсь Вы со мной согласитесь и нам не придётся эту тему поднимать :)) тут вопрос спорный, надо смотреть конкретно по месту. то что засорять не стоит сглашусь. Изопропил вадяот ajax стоит отказываться , есть прекрасная замена websocket это совсем не замена а тут по-точне, пожалуйста. 4 года пользуюсь, вместо ajax, неужели ошибался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 09:50 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Petro123Изопропилпропущено... это совсем не замена П.1 начала флейма выполнен. Вадя произнес 'заявление' )) Нене... мы по пирамиде Грэма общаемся :)) Уже вот 2 вопроса закрыли. Жду закрытия третьего (вадя видимо спать ушёл, а я всё до кровати не доберусь). Вопрос с websockets четвёртый. Но вадя когда мне писал второй раз его упустил. Думаю ему просто нечего сказать, потому этот вопрос вероятно уже закрыт. Если нет, то в любом случае быстро закроется. У меня аргументация есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 09:54 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадя, Слово овехед для тебя пустой звук. Бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 09:56 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Програмёр, Давай). Закрой его плжалуйста по сокетам. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 09:58 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
авторНене... мы по пирамиде Грэма общаемся :)) Уже вот 2 вопроса закрыли. Жду закрытия третьего (вадя видимо спать ушёл, а я всё до кровати не доберусь). я стараюсь придерживаться по применению - я вроде ответил, что вопрос спорный, надо по конкретному месту, и по вкусу. про засор - я согласился, но это не отвергает спорность певоно пункта. авторВопрос с websockets четвёртый. Но вадя когда мне писал второй раз его упустил. Думаю ему просто нечего сказать, потому этот вопрос вероятно уже закрыт. Если нет, то в любом случае быстро закроется. У меня аргументация есть вот тут ничего не понял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:03 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
Програмёр, я так понимаю Petro123 дошёл до основания пирамиды? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:04 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадяПрограмёр, я так понимаю Petro123 дошёл до основания пирамиды? Почти. Ссылаясь на личность автора, но не оскорбляя )) Но он в нашей беседе в целом не участвует, потому его простительно... В виде банального вброса :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:12 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
ПрограмёрУ меня аргументация есть не поможет )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:18 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадяавторНене... мы по пирамиде Грэма общаемся :)) Уже вот 2 вопроса закрыли. Жду закрытия третьего (вадя видимо спать ушёл, а я всё до кровати не доберусь). я стараюсь придерживаться по применению - я вроде ответил, что вопрос спорный, надо по конкретному месту, и по вкусу. про засор - я согласился, но это не отвергает спорность певоно пункта. авторВопрос с websockets четвёртый. Но вадя когда мне писал второй раз его упустил. Думаю ему просто нечего сказать, потому этот вопрос вероятно уже закрыт. Если нет, то в любом случае быстро закроется. У меня аргументация есть вот тут ничего не понял Ну значит так, как я понял нашу беседу: 1. Аргумент против - медленно Ответ на аргумент - скорость незначима. После этого пришли к согласию, что в данном случае это не является минусом 2. Аргумент против - неграмотно (потому как можно иначе) Ответ на аргумент - нельзя это сделать иначе не засоряя глобальную область видимости 3. Аргумент против - небезопасно (не Ваш, а urukhay) Ответ на аргумент - учитывая выбранный инструмент вообще незначимо :) 4. Заявление пока без аргументации - вместо ajax можно использовать websocket. Жду аргументацию для чего так делать, если эта тема всё ещё интересна. То есть пока против eval в указанном контексте аргументов нет (все или крайне незначимы или ошибочны)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:22 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
автор2. Аргумент против - неграмотно (потому как можно иначе) Ответ на аргумент - нельзя это сделать иначе не засоряя глобальную область видимости я б не стал так котегорично автор3. Аргумент против - небезопасно (не Ваш, а urukhay) Ответ на аргумент - учитывая выбранный инструмент вообще незначимо :) eval вообще не рекомендуют, и я б не рекомендовал, лучше поискать другой вариант. но это моё мнение. автор4. Заявление пока без аргументации - вместо ajax можно использовать websocket. Жду аргументацию для чего так делать, если эта тема всё ещё интересна. по этой теме я могу много рассказать, поделиться опытом применения, описать достоинства и недостатки. поэтому, для конкрктики, если интересно - задавайте вопросы правда по серверной части в применении к серверу на java. ссылку на информацию я дал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:38 |
|
||
|
Автоматический обработчик html форм на JS
|
|||
|---|---|---|---|
|
#18+
вадяпо этой теме я могу много рассказать, поделиться опытом применения, описать достоинства и недостатки. поэтому, для конкрктики, если интересно - задавайте вопросы правда по серверной части в применении к серверу на java. ссылку на информацию я дал. в случае проблемы с соединением по websocket откат на ajax - есть(как в sockjs например)? тебе вебсокеты нужны чтоб на сервере состояние держать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2016, 10:42 |
|
||
|
|

start [/forum/topic.php?fid=22&startmsg=39338350&tid=1444910]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
143ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 249ms |

| 0 / 0 |
