Vimperatorでパスワードをクリップボードにコピーする
Show Passwordはログインページなどで非表示になっているパスワードを表示できるようになるGreasemonkeyプラグインなのだけれども、少々やっかいなところがある。
input[@type="password"]な要素にマウスオーバーするとその要素のtypeがtextになりパスワードが可視化されるのだが、
- マウスオーバーした状態で
- 入力した状態でPOSTするためにエンターキーを押す
ことで入力履歴として残ってしまう。
個人的な用途としては「パスワードを忘れてしまったがブラウザには値が残っているので、その値を知りたい」だけなので、vimpでクリップボードにコピー&一定時間経過したらクリアするようにしてみた。
js <<EOM // パスワードをクリップボードにコピー commands.addUserCommand( ['passwordcopy', 'pc'], 'パスワードをコピー', function() { var ps = content.document.getElementsByTagName('input'); var passwords = []; for (var i = 0, n = ps.length; i < n; ++i) { var p = ps[i]; if (p.getAttribute('type') !== 'password' || !p.value) { continue; } p.setAttribute('type', 'text'); passwords.push(p.value); p.setAttribute('type', 'password'); } if (!!passwords.length) { util.copyToClipboard(passwords.join(',')); liberator.echo('yanked password'); } else { liberator.echoerr('not yanked'); } // 20秒たったらクリア setTimeout(function() { util.copyToClipboard(''); }, 1000 * 20); } ); EOM
追記: !p.valueの判定を追加