Подмена вызываемой функции - выполняется сразу две функции о.О
Здравствуйте
Столкнулся со странной работой (браузера? 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, время: 21:59. |