remove password off nope new funciona disable desactivar chrome autocompletar php jquery html autocomplete cross-browser

php - password - ¿Los navegadores son compatibles con autocompletar para los formularios de inicio de sesión cargados con ajax?



disable autocomplete chrome (6)

Autocompletar, al menos en Firefox, se activa durante la carga de la página. Agregar el contenido luego perdería la ventana de oportunidad.

Un formulario de inicio de sesión es pequeño. Lo incluiría en la página desde el principio y consideraría ocultarlo con CSS hasta que se desee.

Mi problema es que el autocompletado de los navegadores (IE&FF) no funciona para mi formulario de inicio de sesión.

Tengo una aplicación web con CakePHP & jQuery. Para permitir a los visitantes iniciar sesión / registrarse discretamente. El formulario de inicio de sesión está dentro de un div, que se carga a través de AJAX. (Esto permite iniciar sesión sin recargar una página).

Los navegadores lo reconocen como un campo de inicio de sesión, ya que me piden que guarde las credenciales al hacer clic en iniciar sesión. Y realmente guardan el nombre de usuario / contraseña, tal como aparecen entre los guardados en la configuración del navegador. Pero el nombre de usuario / contraseña guardado nunca se ingresa automáticamente. No aparecen pre-ingresados ​​cuando se carga la página. Cuando empiezo a escribir el nombre de usuario, el nombre de usuario aparece como una sugerencia, pero incluso cuando lo seleccionas, la contraseña no se ingresa junto a él. ¿Por qué? ¿Cómo puedo hacer que esto funcione?

Que puedes probarlo tú mismo, aquí hay un formulario de inicio de sesión AJAX simple:

http://gablog.eu/test/ajaxlogin.html

Carga el siguiente formulario de inicio de sesión, si vas a la url a continuación, autocompletar funcionará solo para el formulario simple, por lo que no es un problema con el formulario en sí, sino que está cargado con AJAX: http://gablog.eu/test/loginform.html

El diseño:

<div id="user-bar"> <script type="text/javascript"> $(function() { $("#user-bar").load(''loginform.html'').html(); }); </script> </div>

La vista cargada (cuando no ha iniciado sesión):

<form id="form-login" action="" onsubmit="login(); return false;"> <input type="text" id="username" name="username"/> <input type="password" id="password" name="password"/> <input type="submit" value="Login"/> <div id="login-error" class="error-message"></div> </form> <script type="text/javascript"> function login() { $.post(''/ajax/login'', $("#form-login").serialize(), function(data) { if (data.success) { $("#user-bar").load(''userbar.html'').html(); } else { $("#login-error").html(data.message); } }, "json"); } </script>

Para aclarar: no quiero usar el autocompletado de AJAX, quiero que el autocompletado del navegador funcione para mi formulario de inicio de sesión. Este es un problema entre mi formulario y el navegador. El envío de jQuery parece jugar un papel secundario, ya que los nombres de usuario / contraseñas se guardan. ¡Simplemente no se ingresan automáticamente para los elementos HTML cargados de ajax! (El sitio de prueba no usa el envío de jQuery). Pregunta relacionada: el formulario autocompletado / guardado del navegador no funciona en una solicitud ajax


En caso de que ayude, msdn dice (hacia la parte inferior de la página):

Nota: si las dos condiciones siguientes son verdaderas:

  • La página fue entregada a través de HTTPS
  • La página se entregó con encabezados o una etiqueta META que evita el almacenamiento en caché

... la función Autocompletar está deshabilitada, independientemente de la existencia o el valor del atributo Autocompletar. Esta observación se aplica a IE5, IE6, IE7 e IE8.

He envalentonado lo interesante.

.


No creo que pueda hacer que el formulario sea autocompletado para trabajar si lo carga a través de ajax (desde el punto de vista de la seguridad, no sé si realmente se puede abusar o no, pero el hecho de que un script pueda comenzar a cargar campos en la página para ver qué datos se insertan no me parece muy bien).

Si puede, la mejor opción sería agregar un bloque condicional al archivo php e incluir el formulario o no dependiendo de si el usuario está registrado o no. Si por alguna razón no puede hacer eso, puede intentar hacer un document.write () en lugar de la llamada ajax (y sí, usar document.write es feo :)



Veo un caso cuando el formulario de inicio de sesión tiene que ser retirado con ajax - si el resto del sitio web se carga como html estático (caché). El formulario de inicio de sesión (o la información de usuario autenticada) no se puede mostrar de forma estática.

Entonces, su solución es extraer el formulario justo después de la declaración (etiqueta final) del elemento DOM que sirve como elemento principal para el código html del formulario de inicio de sesión de ajax-pull, por ejemplo:

<div id="loginforms_parent"></div> <script language="javascript"> /* ajax request and insert into DOM */ </script>

Y el navegador tiene el formulario en DOM onLoad. Probado, Firefox se autocompleta en ese caso.


hay respuesta dada: http://www.webmasterworld.com/javascript/4532397.htm . hace algo con el método de envío y luego usa el método de clic. como sé, los valores no se guardan si no se envía el formulario. Creo que el autor de esa solución solo hace que se envíe, aunque el usuario no haga clic en el botón Enviar.