2010-04-12 16 views
9

Tengo una aplicación web escrita en JavaScript puro (sin HTML generado previamente, excepto por el documento que carga todos los archivos JS).¿Cómo desencadenar autocompletar contraseña guardada en navegadores?

Esta aplicación contiene un formulario de inicio de sesión que se crea dinámicamente cuando se desencadena el evento document.ready event. Intento que el navegador muestre la "¿Recordar contraseña?" diálogo publicando el formulario de inicio de sesión en un iframe oculto antes de iniciar sesión usando ajax (en Firefox la contraseña aparece en la lista de contraseñas guardadas, esta parte obviamente funciona) pero las contraseñas guardadas nunca se completan después de que la pantalla de inicio de sesión se carga nuevamente en otro momento hora. Lo mismo ocurre en Firefox y Safari.

¿Hay algo que pueda hacer o alguna función a la que pueda llamar para disparar el autocompletado?

ACTUALIZACIÓN: relleno automático funciona en Safari al cargar la página inicial, pero no cuando el usuario cierra la sesión y la forma de la conexión se vuelve a crear sin una recarga la página. En Firefox nunca funciona.

Respuesta

4

Además de ajustar los elementos del formulario en un elemento form, asegúrese de que toda la entrada (y tal vez incluso el formulario) tenga atributos únicos name y id que no cambian. El nombre probablemente debería ser algo descriptivo como password para la contraseña, etc., no está seguro de en qué grado los navegadores usan esta información, pero las funciones "autosuggest"/"varita mágica" pueden funcionar mejor si usa un nombre estándar.

Y, por supuesto, debe asegurarse de que no establezca ningún atributo autosuggest/autofill en falso (el framework js podría hacerlo por algún motivo, si está utilizando alguno). Una tercera posibilidad es que algunos navegadores quizás se autocompletan antes de que su script cargue y escriba el formulario en la página, intente crear una versión html estática del formulario y verifique si funciona.

La solución más fácil (si funcionan las formas estáticas) es forzar la recarga de una página al desconectarse (probablemente desee descartar el "estado" de la ejecución de javascript después de cerrar la sesión de todos modos, refrescante es realmente una buena cosa)

+0

siempre se puede tener su formulario de acceso en la página y simplemente oculto hasta documento listo, así .. – gnarf

+0

volver a cargar la página de cierre de sesión en no hacer el trabajo de relleno automático en Safari y Chrome. Sin embargo, Firefox probablemente requiera una página de inicio de sesión estática que estaba tratando de evitar. –

0

No se puede utilizar un truco similar - utilizar un iframe para cargar el formulario y luego, cuando la forma de la conexión que se presenta, en realidad, envíe el formulario de marco flotante, que contendrá la contraseña guardada.

Para obtener la 'contraseña' para que aparezca en el formulario visible, creo que puede medir la longitud de la contraseña en el formato iframe y luego completar el campo de contraseña del formulario visible con el mismo número de *.

1

Algunos navegadores requieren la etiqueta "formulario" para habilitar el nombre de usuario local & almacenamiento de contraseñas. Tenía el mismo problema en la aplicación AJAX, y en mi caso acabo de agregar

<form>...</form> 

etiquetas.

Cuestiones relacionadas