У кого-нибудь есть опыт переопределения alert()
функции в JavaScript?
- Какие браузеры поддерживают это?
- Какие версии браузера поддерживают это?
- Какие опасности в переопределении функции?
javascript
overriding
cllpse
источник
источник
_alert
помощью своего рода в расширенном порядке в первой инстанции.Ответы:
Это определенно "поддерживается". Это ваша веб-страница, вы делаете с ней все, что хотите.
Я уже сделал это, чтобы отслеживать аналитические события, не изменяя библиотеку, а подкрадываясь к событиям.
Используйте шаблон прокси:
Вы также можете обойти вызов исходной функции, если хотите (прокси)
Более подробная информация здесь: JQuery Types # Proxy Pattern
источник
apply()
недоступноwindow.alert
в Internet Explorer 8.apply
это методFunction
объекта. Таким образом, они должны явно ограничить это дляalert
?!Хотя большинство браузеров поддерживают его переопределение, будьте осторожны с тем, что вы делаете с ним.
Так как окно оповещения по умолчанию блокирует поток выполнения, некоторые библиотеки, которые полагаются на это поведение, могут больше не работать (в лучшем случае).
Вы должны быть хорошим гражданином и избегать прикосновения к нативному API. Если вы это сделаете, вы можете разбить вещи, используя сторонний код.
Тем не менее, если вы хотите переопределить поведение оповещения в определенном контексте, вы можете заключить его в анонимную функцию, например:
источник
В функции оповещения Overring нет опасностей. Каждый браузер поддерживает это.
например:
источник
alert("Reloading")
а затем перезагружает веб-страницу. Пользователь может никогда не увидеть текст предупреждения.Я думаю, что каждая реализация Javascript будет поддерживать это, и нет никакой опасности, связанной с этим. Обычно это делается для того, чтобы заменить обычные блоки предупреждений в стиле ОС на что-то более элегантное с HTML / CSS. Выполнение этого означает, что вам не нужно менять существующий код! Тот факт, что это возможно, делает Javascript потрясающим.
источник
Как сказано во многих других ответах, вы можете просто переопределить функцию с помощью
или
однако, это не обязательно переопределяет функцию в прототипе
Window
конструктора (обратите внимание на заглавнуюW
), поэтому хакер все еще может набрать:поэтому вам также нужно переопределить эту функцию с помощью:
или
источник
Ладислав.
Для IE8 вы можете переопределить alert () следующим образом
и позвонить как
источник
Мой опыт работы с переопределенной функцией alert () заключается в том, что мы однажды использовали ее для «взлома» пробной версии библиотеки JavaScript с надписью «Пожалуйста, зарегистрируйтесь!» время от времени на экране.
Мы только что определили нашу собственную функцию alert () и вуаля.
Это было только для целей тестирования, мы купили полную версию позже, так что ничего аморального здесь не происходит ;-)
источник
Все реализации JavaScript в современных браузерах поддерживают переопределение.
Опасности заключаются в том, что вы просто сводите с ума других членов команды, переопределяя общеизвестные функции, такие как alert ().
Поэтому, если вы не переопределяете функции как инструмент для возможной отладки или взлома существующего кода каким-либо образом, я не вижу никакой причины делать это. Просто создайте новую функцию.
источник
Это точно работает в Firefox и ie8. Я не вижу, чтобы был какой-либо браузер, в котором бы он не работал. Это в значительной степени основополагающий принцип работы javascript, хотя его часто не используют с такими встроенными функциями =)
источник
Быстрый взлом, который я делаю, чтобы найти, откуда приходят оповещения, - перейти в консоль, а затем ввести эту
источник
Когда дело доходит до функций браузера js, они
window.alert
выдающиеся и наиболее известные, люди, которые не знают js, знаютalert()
- будьте уверены, что он поддерживается во всех браузерах, используемых сегодня, и ваш фрагмент кода также. Однако я бы не стал переопределять (ну, это скорее рефакторинг, а не переопределение в смысле ООП)alert()
для конкретного варианта использования, как ваш, потому что, когда вам действительно нужно использоватьalert()
без шаблона, и, вероятно, вам это понадобится, тогда вам понадобится другая функция без предупреждения для этого.источник
Я столкнулся с требованием показать сообщение по умолчанию вместе с реальными предупреждающими сообщениями. Вот как мне удалось это сделать.
Я проверил это на хром. Я не уверен, что это хорошая практика, но она служит цели.
источник