2010-07-02 14 views
8

estaba creando un validador de forma para un cliente y se encontró con este error raro SOLO en Internet Exploder (Explorer) 7/8 ....¡Recibo este error! [ 'Volver' declaración fuera de la función]

'return' outside of function, line 1, char 1

De Por supuesto, no había ningún código en la línea 1, era una simple declaración comentada. Y no había nada con eso de ninguna manera. Así que sabía que solo se trataba de un error de dirección directa.

he estado tomando el pelo a cabo para entender lo que podría ser mal aquí ...

que ya han descartado la obvia: las declaraciones de retorno en un bucle, demasiadas sentencias de retorno en una sola función, las devoluciones en realidad fuera de una definición de función legítima.

¿Alguien más ha tenido alguna instancia cuando esto le ha sucedido?

+2

Eso generalmente significa exactamente lo que dice, que tiene una declaración de devolución fuera de cualquier función. El código de muestra ayudaría ... – HurnsMobile

+1

¿Quizás algún código fuente nos ayude a ayudarlo? – jball

+0

Un ejemplo de código ayudaría. Un mensaje de error no es suficiente para identificar un error en su código. – riwalk

Respuesta

15

¡Lo tengo!

El problema era que estaba usando una declaración de devolución para anular el comportamiento predeterminado de mi formulario y se asignó a una propiedad, ¡PERO no se colocó dentro de una función anónima!

que tenían un elemento de formulario que se creó de esta manera:

<form name="formname" onSubmit="javascript:validateForm(this);" action="javascript:return false;" method="post" enctype="multipart/form-data"> 

Todo lo que necesitaba era cambiar la propiedad de acción a esto:

… action="javascript:function(){return false};" 

ahora funciona sin problemas!

Espero que esto salve a alguien más del infierno que pasé.

+4

'javascript:' Las URL son malas; nunca los use, especialmente para 'acción'. Si realmente no hay ningún lugar útil para apuntar el formulario para usuarios que no son JS, puede darle una acción inútil como '#', y usar 'onsubmit =" return false "' para detener el envío (no se usa el prefijo 'javascript:' Necesario en los controladores de eventos, que no son URLs, incluido que no hace nada sensato). O bien, si no necesita asociar campos de formulario de solo script con cualquier lugar para enviarlos, puede omitir la etiqueta de formulario. – bobince

+0

Lo sentimos, pero en algunos navegadores, el hash "#" genera una solicitud HTTP adicional, que debe evitarse. Especialmente desde que Google entra en pánico por la velocidad de carga de la página. Esta información es para que las personas sepan que el uso de return DONDEQUIERA fuera de una función hará que IE arroje un error. Cada vez que use "devolver", sin importar en qué propiedad se encuentre, debe estar encerrado en una función: anónima o no. Al devolver falso, impide que el navegador realice su comportamiento predeterminado. Funciona en TODOS los navegadores. Incluir la porción "javascript:" es simplemente buenas prácticas: asegura el tipo de código correcto. – exoboy

+1

@bobince es correcto, no use 'javascript:'. Use 'onsubmit =" return validateForm (this); '' en su lugar. 'validateForm' solo necesita devolver false para evitar que el formulario sea enviado. 'onsubmit' ya espera javascript, por lo que no es necesario' javascript: '. Entonces, ¿por qué no dejar la acción vacía? No es necesario un #. – roberkules

1

A veces cuando escribe sistemas de fondo donde se espera que el usuario tenga javascript habilitado para usar el sistema. Me parece bien utilizar las etiquetas javascript: href, ya que el uso del sistema requiere JavaScript de todos modos. En este caso, no hay nada de malo con el uso de href = "javascript:" ¿está ahí?

0

Estaba obteniendo este error con ModalPopupExtender. He especificado el siguiente atributo: OnOkScript = "return false;"

Configuración OkOkScript = "" resuelva este problema para mí.

1

marque asegúrese de que sea NO escriba "var" en los parámetros de su función. En muchos idiomas, debe especificar el tipo de parámetros del argumento. En JavaScript, no es necesario.

+0

Quizás deba explicar cómo la omisión de 'var' ayuda con el' retorno' del OP. – dakab

Cuestiones relacionadas