質問: plaintext.split(DIVIDE_CHAR); $("#login_id").val(log[0]); $("#passwd") .val(log[1]); } } ``` 質問 -- ブラウザ(Chrome)が自動入力したあとにJavaScriptを実行させて、ログインの入力ボックスを""で上書きしてしまえばいいのではないかと考えますが、どうしたらいいのでしょうか? または、自動入力させないなにか方法はありますか? 以上よろしくお願い致します。 参考 -- サイボウズエンジニアのブログに興味深い記事がありました http://blog.cybozu.io/entry/7452
回答: 自己解決しました。 Chromeが入力ボックスを変更したときに onChange イベントが発生していました。 なので、 「ログイン入力ボックスのチェンジイベントを監視し、イベントが発生したら中身を""で上書きする」 処理を追加しました。 ただし、”ブラウザが勝手にいれた”ときのみ実行したいので (他のサイトのログイン入力情報をクリアしてもちゃんと動作するように) ・入力ボックスでキー入力があった場合は監視フラグを下ろす ・ログイン情報クッキーがあった場合はフラグを下ろす ・ブラウザが勝手にいれたときいちどきりでフラグを下ろす 処理を追加しました。(はぁ。) ``` // ================== // ログイン情報オート入力 // ================== var change_monitor_f = true; // ログイン入力ボックスに変更があった場合、中身を消すフラグ var log = getCookie(COOKIE_LOGIN); // ログイン情報のクッキー取得 if (log != "") { change_monitor_f = false; // ログイン情報のクッキーがあるので、フラグ無効 var bf = new Blowfish(BLOWFISH); var plaintext = bf.decrypt64(log); // 復号化 var log = plaintext.split(DIVIDE_CHAR); $("#login_id").val(log[0]); $("#passwd") .val(log[1]); } $("#login_id").on("change", function(){ if (!change_monitor_f) return false; // 監視フラグ無効時は処理しない var log = getCookie(COOKIE_LOGIN); // ログイン情報のクッキー取得 if (log == "") { change_monitor_f = false; // いちどきりなので フラグ無効 $("#login_id").val(""); $("#passwd") .val(""); } }); // ================== // キー入力監視 // keyclass は、ログインIDまたはパスワード入力ボックスに付けとく // ================== $(".keyclass").keypress( function ( e ) { change_monitor_f = false; // 監視フラグ無効 } ); ``` もちろんもっとスマートな方法、そもそも無効にできる方法はまだまだ募集!