更新
显然,这是OS X版Google Chrome的未解决问题。 It was first reported over seven years ago.如果您碰巧发现自己需要输入包含非ASCII字符的密码,那么您可以选择以下选项:
- 在其他地方输入密码,然后通过剪贴板将其传输到密码字段。
- 使用开发人员工具将输入类型从
password
更改为text
。- 使用其他浏览器
是否有关于可以输入密码字段的字符的规则?我一直在Mac上试验Chrome,看起来我只能输入“特殊”字符,如果它们可以用一个按键生成(不包括修改键,如 Alt 和 Shift )。
例如,我可以使用单个按键输入版权符号(©)( Alt G ),但带有变音符号(ö)的字母“o”需要两个( Alt U 后跟 O )。在后一种情况下,变音符号不会出现在密码中。在Windows中,似乎这些字符是通过在按 Alt 键的同时键入幻数来获得的,因此这种行为可能存在跨平台差异。也可能存在跨浏览器的差异。
我问的原因是因为我想实现一个带有密码输入字段的注册表单,可以从type="password"
切换到type="text"
。这允许用户检查字段的内容(假设这样做是安全的),并允许我使用随机密码生成器预先填充该字段,然后用户可以将其复制到确认字段中。但通过这样做,我正在更改此字段接受的字符集。这显然是不可取的;例如,如果我选择Röntgen
作为密码,我将永远无法登录(除非登录表单也可以切换)。
那么这里最好的方法是什么?我不想完全禁止特殊字符,但将每个人限制为可打印的ASCII看起来是最简单的选择。
为了说明问题,这是一个包含两个密码字段的表单。一个字段可以切换到普通文本输入。单击按钮以显示两个字段的内容。
function reveal() {
if ($('#p1').attr('type') == 'password') {
$('#p1').attr('type', 'text');
$('#r').html('(Hide)');
}
else {
$('#p1').attr('type', 'password');
$('#r').html('(Reveal)');
}
}
function show_passwords() {
$('#out1').html($('#p1').val());
$('#out2').html($('#p2').val());
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<form onsubmit="return false;">
<p><label>Password:<br><input type="password" id="p1" name="p1" size="20"></label>
<small><a id="r" href="#" onclick="reveal()">(Reveal)</a></small></p>
<p><label>Confirm password:<br><input type="password" id="p2" name="p2" size="20"></label></p>
<p><button onclick="show_passwords(); return false">Show password field contents</button></p>
</form>
</div>
<table style="min-width:20em; border: 1px solid #bbb">
<tr><td style="width:8em">Password:</td><td id="out1"></td></tr>
<tr><td>Password confirm:</td><td id="out2"></td></tr>
</table>
答案 0 :(得分:2)
这里有关于铬瑕疵的报告的原作者。有人告诉我在webkit's bugtraq上打开同样的问题(当时Chrome在webkit上运行),webkit dev告诉我Cocoa(OSX UI框架)不允许在密码字段上使用非ASCII字符(而且我'我已经发现这个问题,我的OSX密码不像我的在线服务密码那样具有挑战性)并且Webkit努力模仿本机行为。所以问题不是你的浏览器而是OSX本身。
公平地说,当Chrome切换到Blink时,bugtrack上有一条新消息:
这仍然是一个问题。 在最初的WebKit错误上,“决定”在密码控件中允许死键输入并不理想 解决方案,WebKit应该努力遵循Cocoa的行为。
现在看来,Blink以两种方式都失败了:死键不像文本字段那样表现,他们这样做 不遵循NSSecureTextField的行为(即表现为密钥不是死键)。
Safari 9.0.1中的WebKit 601.2.7按预期运行。 Blink是否应该遵循平台行为,或者愿意 首选支持密码字段中的死键?
但时间已经过去,到目前为止没有任何改变......
我只使用不遵循Cocoa限制的Firefox,并允许在密码字段上使用任何字符。
如果您不想强制用户,只需从生成的密码中跳过非ASCII字符。