¿Alguien tiene alguna experiencia para anular la alert()
función en JavaScript?
- ¿Qué navegadores admiten esto?
- ¿Qué versiones de navegador admiten esto?
- ¿Cuáles son los peligros de anular la función?
javascript
overriding
cllpse
fuente
fuente
_alert
como una especie de temperatura de expansión en primera instancia.Respuestas:
Definitivamente es "compatible". Es tu página web, haces lo que quieras con ella.
Ya hice esto para rastrear eventos analíticos sin modificar una biblioteca, sino escabulléndome en eventos.
Use el patrón proxy:
También puede omitir la llamada a la función original si lo desea (proxy)
Más información aquí: JQuery Tipos #Proxy Patrón
fuente
apply()
no está disponiblewindow.alert
en Internet Explorer 8.apply
es un método delFunction
objeto. Entonces, ¿deben restringirlo explícitamentealert
?Aunque la mayoría de los navegadores admiten anularlo, tenga cuidado con lo que está haciendo con él.
Dado que el cuadro de alerta predeterminado bloquea el hilo de ejecución, algunas bibliotecas que dependen de este comportamiento podrían dejar de funcionar (en el mejor de los casos).
Debes ser un buen ciudadano y evitar tocar la API nativa. Si lo hace, podría dividir las cosas cuando use un código de terceros.
Sin embargo, si desea redefinir el comportamiento de alerta en un contexto específico, puede encerrarlo con una función anónima, como esta:
fuente
No hay peligros en la función de alerta Overring. Todos los navegadores lo admiten.
por ejemplo:
fuente
alert("Reloading")
y luego vuelve a cargar la página web. Es posible que el usuario nunca vea el texto de alerta.Creo que cada implementación de Javascript lo soportará, y no hay ningún peligro involucrado en ello. Comúnmente se hace para reemplazar los cuadros de alerta de estilo OS por algo más elegante con HTML / CSS. ¡Hacerlo de esta manera significa que no tiene que cambiar el código existente! El hecho de que sea posible hace que Javascript sea increíble.
fuente
Como se dijo en muchas de las otras respuestas, puede anular la función con
o
sin embargo, esto no necesariamente anula la función en el prototipo del
Window
constructor (tenga en cuenta la mayúsculaW
), por lo que el hacker aún puede escribir:por lo tanto, también debe anular esa función con:
o
fuente
Ladislav.
Para IE8 puede redefinir alert () de esta manera
y llama como
fuente
Mi experiencia con la anulación de la función alert () es que una vez la usamos para "piratear" la versión de prueba de la biblioteca de JavaScript que mostraba "¡Por favor regístrese!" molesta pantalla a través de alertas de vez en cuando.
Acabamos de definir nuestra propia función alert () y listo.
Fue solo con fines de prueba, compramos la versión completa más tarde, así que no pasa nada inmoral aquí ;-)
fuente
Todas las implementaciones de JavaScript en los navegadores modernos admiten la anulación.
Los peligros son bastante simples: volvería locos a otros miembros del equipo al anular funciones comúnmente conocidas como alert ().
Entonces, a menos que esté anulando las funciones como una herramienta para quizás depurar o piratear el código existente de alguna manera, no veo ninguna razón para hacerlo. Solo crea una nueva función.
fuente
Seguro funciona en firefox y ie8. No puedo ver que haya ningún navegador en el que no funcione. Esto es más o menos fundamental de cómo funciona JavaScript, a pesar de que uno no lo ve a menudo usado con funciones nativas como esa =)
fuente
Un truco rápido que hago para encontrar de dónde provienen las alertas es ir a la consola y luego ingresar esto
fuente
Cuando se trata de las funciones del navegador js
window.alert
es preeminente y más conocido, las personas que no conocen js lo sabenalert()
: pueden estar seguros de que es compatible con todos los navegadores en uso hoy en día y su fragmento de código también. Sin embargo, no anularía (bueno, esto es más como refactorizar en lugar de anular en el sentido OOP)alert()
para un caso de uso particular como el suyo porque cuando realmente necesite usaralert()
sin plantilla, y probablemente lo hará, entonces necesitará otra función no alerta para hacerlo.fuente
Me he enfrentado al requisito de mostrar un mensaje predeterminado junto con los mensajes de alerta reales. Así es como logré hacerlo.
Lo he probado en cromo. No estoy seguro de si es una buena práctica, pero sirve para ese propósito.
fuente