Динамическая замена кода, как вы и предполагали, в некоторых случаях может сработать, но идти по пути страшно - хрупко, один неверный шаг, и вы обанкротились, и это быстро превращается в кошмар обслуживания.
Как сказал комментатор, ваша более чистая ставка заключается в том, чтобы просто обернуть нативный window.alert
, а затем делать правильные вещи, когда проходит строка, о которой вы заботитесь, согласно ответу здесь:
JavaScript: предупреждение о переопределении ()
(Вставьте здесь стандартный комментарий о том, как вы должны размещать своих серверных людей на той же странице / команде, что и вы, чтобы вам не приходилось взламывать собственную страницу.)
ОБНОВЛЕНИЕ: Вы не спрашиваете об оповещении, вы спрашиваете об этой проблеме вообще. Да, вы могли бы то, что предлагают другие. Но если у вас есть оригинальный код для функции, почему бы просто не заменить его полностью? Если вы хотите использовать глобальную функцию с именем foo()
, вы можете запустить JS, которая выполняет:
window.foo = function() {
// The stuff I know is there (A)
...
// Some new stuff I want to change (B)
...
// More stuff I know is there (C)
}
Который выбросит оригинал и заменит его вашей версией. Это будет работать достаточно хорошо, хотя «исправление обезьян» на странице определенно сопровождается некоторыми проблемами с обслуживанием.
Я определенно отмечу здесь, что если вы по какой-то причине не можете сделать это и, следовательно, настаиваете на замене текстового кода в середине существующих функций , вы злоупотребляете языком / средой для цели ремонтопригодны что-нибудь, и вы действительно облажались несколькими способами.