2011-05-31 35 views
10

erroralert() no funciona en Chrome

'nuff said. No tengo ni idea de por qué usar alert() no funcionaría. Funciona perfectamente en Firefox, pero da ese error en Chrome.

+1

¿Podría probar 'window.alert' (sin invocar) y publicar el resultado por favor? – pimvdb

+0

¿Quizás has deshabilitado la alerta en algún lugar del código? 'alert ('foo');' funciona perfectamente en mi Chrome. – Xaerxess

+0

@Xaerxess Sin embargo, no explicaría por qué funcionaría en Firefox. – alex

Respuesta

16
window.alert = null; 
alert('test'); // fail 
delete window.alert; // true 
alert('test'); // win 

window es una instancia de DOMWindow y estableciendo algo que window.alert, la correcta aplicación está siendo "sombreados", es decir, cuando se accede a alert es primero buscándolo en el objeto window. Por lo general, esto no se encuentra, y luego sube la cadena de prototipos para encontrar la implementación nativa. Sin embargo, al agregar manualmente la propiedad alert al window, la encuentra de inmediato y no necesita subir la cadena del prototipo. Con delete window.alert puede eliminar la propiedad propia de la ventana y volver a exponer la implementación del prototipo de alert. Esto puede ayudar a explicar:

window.hasOwnProperty('alert'); // false 
window.alert = null; 
window.hasOwnProperty('alert'); // true 
delete window.alert; 
window.hasOwnProperty('alert'); // false 
+0

Gracias amigo, esto pareció hacer el truco. No tengo idea de qué es lo que está configurando 'window.alert' para anular, incluso eliminar todas las bibliotecas de terceros que estoy trayendo no condujo a ninguna parte. Extraño. –

+0

@ Charlie Somerville: ¿Tal vez tenga algún tipo de extensión que inyecte scripts en páginas web? – pimvdb

+2

@pimvdb Resulta que el complemento de Chrome "Mejor bloqueador de ventanas emergentes" decidió que es apropiado establecer alerta, confirmar y solicitar nulo. Desinstalado. –

1

Tome un vistazo a este tema: http://code.google.com/p/chromium/issues/detail?id=4158

El problema es causado por el javascript método "window.open (URL, windowName [, windowFeatures])". Si se especifica el 3er windowFeatures parámetros, a continuación, cuadro de alerta no funciona en la ventana emergente limitado en Chrome, aquí es una reducción simplificada:

http://go/reductions/4158/test-home-constrained.html

Si los windowFeatures 3er parámetro es ignoraron , caja luego a la alerta funciona en el emergente en Chrome (la ventana emergente es en realidad abierto como una nueva pestaña en Chrome), como esto:

http://go/reductions/4158/test-home-newtab.html

no ocurre en IE7, Firefox3 o Safari3, es un problema específico de Chrome.

Véase también los accesorios para simplificados reducciones

+0

La página web no está en una ventana emergente ni nada, es solo una página normal. –

13

Tuve el mismo problema recientemente en mi servidor de prueba. Después de buscar razones por las que esto podría estar sucediendo y probando las soluciones que encontré aquí, recordé que había hecho clic en la opción "Deje de crear esta página emergente" unas horas antes, cuando el script en el que estaba trabajando aparecía de forma alarmante. .

La solución fue tan simple como cerrar la pestaña y abrir una nueva.

+0

Esto también funciona para mí, deshabilité la ventana emergente en cromo y olvidé la acción. Una vez que abrí una nueva pestaña, todo está bien. Gracias :) –

0

Aquí hay un fragmento que no necesita ajQuery y permitirá alertas en un marco flotante para discapacitados (como en codepen)

for (var i = 0; i < document.getElementsByTagName('iframe').length; i++) { 
    document.getElementsByTagName('iframe')[i].setAttribute('sandbox','allow-modals'); 
} 

que aquí hay una demostración codepen de trabajo con una alerta() después de esto fijar así: http://codepen.io/nicholasabrams/pen/vNpoBr?editors=001

0

ponga esta línea en el extremo del cuerpo. Puede ser que el DOM no esté listo todavía en el momento en que el compilador lea esta línea.

<script type="text/javascript" src="script.js"></script>" 
Cuestiones relacionadas