Подмена вызываемой функции - выполняется сразу две функции о.О
Здравствуйте
Столкнулся со странной работой (браузера? js?), возможно кто-то сталкивался с подобным. Итак, есть простая страница, на которой есть какая-нибудь кнопка с вызовом js функции, к примеру onclick="function1()" Я пробую "хакнуть" страницу, подменяя вызываемую функцию руками, в html-редакторе браузера на другую, также существующую в коде: onclick="function2()" И нажимаю на эту кнопку - в итоге выполняется сразу и function1() и function2(). Как такое может быть? ____________________________________________ P.S. Сами функции никак между собой не связаны, и если я в коде (не через браузер) меняю на onclick="function2()" - то отрабатывает только function2(). P.P.S. Браузер Google Chrome P.P.P.S. Попробовал сделать тоже самое в FireFox (подменить функцию в html-редакторе браузера) - кнопка вообще перестает работать. P.P.P.P.S. Если вызывать функцию через консоль - то они вызываются нормально, по одной. Все больше склоняюсь к выводу о том, что такой "двойной вызов функций" является особенностью браузера Chrome |
Странно... Меняю в хроме в html-редакторе в test.onclick = foo1; на foo2 - по-прежнему срабатывает foo1, и только
<input id="test" type="text"> <script> function foo1() { alert(1) } function foo2() { alert(2) } test.onclick = foo1; </script> |
Вы используете другой подход, в моем случае функции вызываются так (проверил - здесь также, если подменить foo1() на foo2() происходит вызов сразу двух функций подряд):
<html> <head></head> <body> <p onclick="foo1()">123123123</p> <script> function foo1() { alert(1) } function foo2() { alert(2) } </script> </body> </html> |
ну так если написать test.value = "привет" , то тоже ниче не меняет. Не работает значит так обновления в яс
|
Обновил пост #3
P.S. Изменения вношу через DevTools (которая в хроме вызывается на F12) |
<html> <head></head> <body> <p onclick="foo1()">123123123</p> <script> function foo1() { alert(1) } function foo2() { alert(2) } </script> </body> </html> Да, так 2 функции заработали в хроме. Значит, js помнит предыдущий обработчик. в FF работает только вторая функция в ИЕ - тоже только вторая в Opera - обе |
так же и у меня, значение value меняется, а функции 2 вызываются, в консоле пишет test.onclick присвоенна только foo1, хоть и прописал foo2 в Elements.
|
Всем спасибо за комментарии и тесты. Сегодня стал чуть лучше понимать особенности работы браузеров :)
|
Часовой пояс GMT +3, время: 09:07. |