只应添加一类,说password-container到包含密码的元素。将初始内容设置为蒙版。
即:
push @certlist, {
state => $cert[0],
'expire' => $date,
'subject' => $cert[5],
'cn' => $cn,
'ip' => $ccd_ips->{$cn},
'dl' => '',
're' => '',
'pw' => '*' x 8,
};
添加JavaScript代码的页面添加一个onclick处理程序与password-container类处理的触发的所有元素。
return $q->table(
{ 'class' => 'certs' },
$q->Tr(
[
$q->th(
[ 'Status', 'Common Name', 'D', 'Password',
'Date', 'Subject', 'IP-Adress', 'R'
]
) . "\n",
map {
$q->td({ 'class' => $_->{'state'} }, $states{ $_->{'state'} }) .
$q->td([ @$_{qw(cn dl)} ]) .
$q->td({ 'class' => 'password_container' }, $_->{pw}) .
$q->td([ @$_{qw(expire subject ip re)} ]) . "\n"
} @certlist
]
)
) . "\n";
或一些类似的垃圾。
这再一次显示了不使用CGI.pm生成HTML的价值。而是使用模板。这只是对未来的建议,我假设你无法修复现有的代码库。
所有的HTML生成函数不再被保留。任何问题,错误或补丁都将被拒绝,除非它们与基本上损坏的页面渲染有关。
这样做的基本原理是CGI.pm的HTML生成函数最多只会造成混淆,最糟糕的情况是维护噩梦。您应该使用模板引擎来更好地分离问题。有关使用CGI.pm和Template::Toolkit模块的示例,请参阅CGI::Alternatives。
这些函数和它们的perldoc被认为已被弃用,它们不再被维护,也不会接受它们的修复或功能。但是,它们将继续存在于CGI.pm中,并且不存在任何弃用警告(“软”弃用),因此如果您真的想要,可以继续使用它们。所有这些功能的文档已被移至CGI::HTML::Functions。