2012-08-31 11 views
16

Recibo este error en la consola safari cuando intento hacer algo desde un punto de interrupción. Informe de error aquí: https://bugs.webkit.org/show_bug.cgi?id=83267SyntaxError: las instrucciones 'con' no son válidas en el modo estricto

¿Alguien tiene una solución? Por razones que asumo están relacionadas con esto, javascript ha dejado de ejecutarse en mi sitio en safari.

editar: el informe de errores también contiene pasos de reprografía.

otra edición: No estoy usando una declaración "con". Este es un error de la consola de safari.

+1

No específico de Safari. ''use strict'; con (esto);' en FF/Chrome produce "código de modo estricto no puede contener 'con' declaraciones '. –

+11

Es específico de Safari que si intentas evaluar cualquier cosa en la consola del depurador dentro de un ámbito de "uso estricto" ;, obtienes este error, incluso si no puedes ver la palabra 'con' en ninguna parte de tu script o en lo que has escrito. Aparentemente Safari envuelve todo lo que has escrito en un 'con' e intenta evaluarlo. Consulte el informe de errores a los que se hace referencia para obtener más detalles. –

+1

posible duplicado de [No se puede inspeccionar la variable de ámbito cuando se usa el modo estricto] (http://stackoverflow.com/questions/8545191/cant-inspect-scope-variable-when-using-strict-mode) –

Respuesta

6

La declaración with(obj) {} está en desuso, y como tal, no es válida en modo estricto.

Para solucionar esto, deshabilite el modo estricto o deje de usarlo con las instrucciones.

+0

Estoy técnicamente no usar con (¿el safari es internamente, supongo?) pero este es mi tipo de documento: ... ¿esto es lo que significa "estricto" en este contexto? – quinn

+0

No. El modo estricto se habilita con '" use strict "' en la parte superior de su archivo JS. – Eric

+3

Así que supongo que la solución sería eliminar 'uso estricto' en todas partes que pueda encontrarlo hasta que Safari corrija este error. – quinn

2

El modo estricto en ECMAScript 5 prohíbe, p. Ej. with declaración. Usted tiene dos opciones:

  • modo estricto desactivar (quitar "strict mode"; línea del archivo/función), o
  • (preferido) evitar el uso de with declaraciones - que son perjudiciales y totalmente ilegible.

Más sobre el modo estricto de John Resig: ECMAScript 5 Strict Mode, JSON, and More.

Usted puede leer en el artículo, que el modo estricto:

  • hace incapaz de delete variable (como en delete foo;),
  • límites de uso de eval,
  • añade algunas limitaciones a las funciones (por ejemplo. acceder caller y callee),
  • elimina with declaraciones,
+1

No es el OP que usa, es el código de consola de Safari. – gotofritz

Cuestiones relacionadas