2011-07-19 27 views
12

Si se utilizawindow.location.href = window.location.href y JSLint

window.location.href = window.location.href; 

para recargar una página (sin volver a publicar) no es una mala práctica, ¿qué debemos hacer de "asignación extraño de JSLint "queja?

EDITwindow.location.reload() no es adecuado cuando no desea POSTAR los datos del formulario de nuevo. En algunos navegadores, provoca el "Reenviar datos de formulario". que es mejor evitar cuando no es necesario.

ACTUALIZACIÓN me hizo algunas pruebas muy breve y se encontró:

  • Chrome 12 y Safari 5.0.5 en Mac no vuelva a POST con .reload()
  • FF 2.0, 3.6, 4.0, 5.0 en Mac presenta al usuario el "cuadro de diálogo de reenviar formulario" con .reload(), .reload(true) y .reload(false)
  • IE6, IE8 (estándares), IE8 (modo IE7, estándares) en XP; y IE9 e IE10-tech-preview en Win7 se comportan igual que FF en Mac
  • window.location = window.location.href funciona igual que window.location.href = window.location.href en todos estos navegadores.

Aquí está the test script.

+0

¿Sabía que hay una lista de correo electrónico para jslint? También podría hacer preguntas como esta allí. – ErikE

+0

MDN Docs para [window.location.reload (forceGet);] (https://developer.mozilla.org/en/window.location#reload) – epascarello

+0

@ErikE: gracias por la sugerencia. Quizás esto es algo que JSLint desea tolerar cuando se establece la opción '" navegador "'. –

Respuesta

8

probar este

window.location = window.location.href; 
+1

Pero no 'window.location.reload()' volver a enviar el formulario POST? –

+0

Sí, esta respuesta no es correcta. –

+0

Creo que pedirá volver a intentarlo en caso de publicación. He editado mi respuesta. – ShankarSangoli

1

De hecho, es una tarea extraña para asignar algo a sí mismo. Parece más una advertencia que una queja.

yo preferiría usar:

window.location.reload() 

Editar: pero eso sería volver a publicar el formulario ahora no es así. Aquí hay una publicación en SO sobre lo mismo: php reload page without posting data

+0

Alas, 33 segundos atrás. .. – ErikE

+1

Ver mi Q en el comentario a ShankarSangoli –

+0

jaja menos talky talky más código –

0

Es una tarea extraña, JSLint tiene razón. El problema es que establecer la variable tiene el efecto secundario de volver a cargar la página. Me gustaría codificar esto como window.location.href = window.location.href + ''; para evitar errores JSLint y poner un comentario explicando lo que hace.

+0

Sin duda es una tarea extraña. Lamentablemente, su sugerencia no ayuda: * Problema en la línea 1, carácter 47: Se esperaba 'Cadena' y en su lugar vi '' ''. * –

+0

Podría haber jurado que lo revisé. Otro intento: 'window.location.href = window.location.href + String();' –

+0

Eso está bien con JSLint y seguramente será equivalente a 'window.location.href = window.location.href;'. Pero creo que prefiero 'window.location = window.location.href;' de ShankarSangoli, que creo que puedo permitir sin hacer ningún comentario. –

Cuestiones relacionadas