yes javascript override

yes - JavaScript: alerta de anulación()



javascript yes no dialog (11)

¿Alguien tiene experiencia con anular la función de alert() en JavaScript?

  • ¿Qué navegadores soportan esto?
  • ¿Qué versiones de navegador soportan esto?
  • ¿Cuáles son los peligros de anular la función?

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 subproceso de ejecución, es posible que algunas bibliotecas que se basan en este comportamiento ya no funcionen (en el mejor de los casos).

Debes ser un buen ciudadano y evitar tocar la API nativa. Si lo hace, podría separar las cosas cuando utilice un código de terceros.

Sin embargo, si desea redefinir el comportamiento de alerta en un contexto específico, podría incluirlo con una función anónima, como esta:

/* new funky alert */ function myFunkyAlert(msg) { /* here goes your funky alert implementation */ alert("Look ma!/n" + msg); } (function(alert) { // anonymous function redefining the "alert" /* sample code */ alert("Hello World!"); })(myFunkyAlert);


Como se dijo en muchas de las otras respuestas, simplemente puede anular la función con

window.alert = null

o

window.alert = function(){}

sin embargo, esto no necesariamente anula la función en el prototipo del constructor de Window (note el capital W ), por lo que el pirata informático aún puede escribir:

Window.prototype.alert.apply(window, ["You were hacked!"]);

por lo tanto, también debe anular esa función con:

Window.prototype.alert = null

o

Window.prototype.alert = function(){}


Creo que todas las implementaciones de Javascript soportarán esto, y no hay peligro involucrado con ello. Por lo general, se hace para reemplazar los cuadros de alerta simples de estilo OS por algo más elegante con HTML / CSS. ¡Hacerlo de esta manera significa que no tienes que cambiar el código existente! El hecho de que sea posible hace que Javascript sea impresionante.


Cuando se trata de las funciones del navegador js window.alert es preeminente y más conocido, las personas que no saben js saben alert() - puede estar seguro de que es compatible con todos los navegadores en uso hoy en día y su fragmento de código también lo es . 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 tuyo porque cuando realmente necesitas usar alert() sin plantilla, y probablemente lo harás , entonces necesitarás otra función de no alerta para hacerlo.


Es definitivamente "apoyado". Es tu página web, haces lo que quieras con ella.

Ya hice esto para rastrear los eventos analíticos sin modificar una biblioteca pero entrando a escondidas en los eventos.

Utilice el patrón de proxy:

(function(proxied) { window.alert = function() { // do something here return proxied.apply(this, arguments); }; })(window.alert);

También puede omitir la llamada a la función original si lo desea (proxy)

Más información aquí: JQuery Types #Proxy Pattern


Ladislav.
Para IE8 puedes redefinir alerta () de esta manera

/** * Definition of global attached to window properties <br/> */ (function() { nalert = window.alert; Type = { native: ''native'', custom: ''custom'' }; })(); /** * Factory method for calling alert(). * It will be call a native alert() or a custom redefined alert() by a Type param. * This defeinition need for IE */ (function(proxy) { proxy.alert = function () { var message = (!arguments[0]) ? ''null'': arguments[0]; var type = (!arguments[1]) ? '''': arguments[1]; if(type && type == ''native'') { nalert(message); } else { document.write(''<h1>I am redefiend alert()<br/>Alert say: ''+message+''</h1>''); } }; })(this);

y llamar como

alert(''Hello, hacker!''); nalert(''I am native alert''); alert(''Hello, user!'', Type.custom);


Mi experiencia con la función de alerta () que prevalece es que una vez la usamos para "hackear" la versión de prueba de la biblioteca de JavaScript que mostraba "¡Por favor, regístrese!" Pantalla molesta a través de alertas de tiempo en tiempo.

Acabamos de definir nuestra propia función de alerta () y listo.

Fue solo para fines de prueba, compramos la versión completa más tarde, así que no hay nada inmoral aquí ;-)


No hay peligros en la función de alerta Overring. Cada navegador lo soporta.

por ejemplo:

// function over riding. Redirecting to Console with Firebug installed. function alert(message) { console.info(message); } alert(''This is an override.'');


Seguro que funciona en firefox y ie8. No puedo ver que haya ningún navegador en el que no funcionaría. Esto es bastante fundamental en el funcionamiento de javascript, aunque uno no lo ve con frecuencia con funciones nativas como esa =)


Todas las implementaciones de JavaScript en los navegadores modernos admiten la anulación.

Los peligros son bastante simples: volvería loco a los demás miembros del equipo anulando las funciones más conocidas, como alert ().

Entonces, a menos que esté anulando las funciones como una herramienta para tal vez depurar o hackear el código existente de alguna manera, no veo ninguna razón para hacerlo. Solo crea una nueva función.


Un truco rápido que hago para encontrar de dónde vienen las alertas, es ir a la consola y luego ingresar esto

function alert(message) { console.info(message); debugger; }