Recebi a mesma mensagem de erro ao tentar fazer isso no Firefox 5.
Eu o resolvi usando o código abaixo:
<script type="text/javascript" language="JavaScript">
$(document).ready(function()
{
var passfield = document.getElementById('password_field_id');
passfield.type = 'text';
});
function focusCheckDefaultValue(field, type, defaultValue)
{
if (field.value == defaultValue)
{
field.value = '';
}
if (type == 'pass')
{
field.type = 'password';
}
}
function blurCheckDefaultValue(field, type, defaultValue)
{
if (field.value == '')
{
field.value = defaultValue;
}
if (type == 'pass' && field.value == defaultValue)
{
field.type = 'text';
}
else if (type == 'pass' && field.value != defaultValue)
{
field.type = 'password';
}
}
</script>
E para usá-lo, basta definir os atributos onFocus e onBlur dos seus campos para algo como o seguinte:
<input type="text" value="Username" name="username" id="username"
onFocus="javascript:focusCheckDefaultValue(this, '', 'Username -OR- Email Address');"
onBlur="javascript:blurCheckDefaultValue(this, '', 'Username -OR- Email Address');">
<input type="password" value="Password" name="pass" id="pass"
onFocus="javascript:focusCheckDefaultValue(this, 'pass', 'Password');"
onBlur="javascript:blurCheckDefaultValue(this, 'pass', 'Password');">
Eu também uso isso para um campo de nome de usuário, portanto, alterna um valor padrão. Basta definir o segundo parâmetro da função para '' quando você o chamar.
Além disso, pode ser interessante notar que o tipo padrão do meu campo de senha é realmente senha, apenas no caso de um usuário não ter o javascript ativado ou se algo der errado, dessa forma a senha ainda estará protegida.
A função $ (document) .ready é jQuery e carrega quando o documento termina de carregar. Isso muda o campo da senha para um campo de texto. Obviamente, você terá que alterar 'password_field_id' para o ID do seu campo de senha.
Sinta-se livre para usar e modificar o código!
Espero que isso ajude todos que tiveram o mesmo problema que eu :)
- CJ Kent
EDIT: Boa solução, mas não absoluta. Funciona no FF8 e IE8, mas não totalmente no Chrome (versão 16.0.912.75). O Chrome não exibe o texto da senha quando a página é carregada. Além disso - o FF exibirá sua senha quando o preenchimento automático estiver ativado.