質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

1回答

8325閲覧

Chromeでオートコンプリートを阻止する方法について

teratail_user

総合スコア14

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

1グッド

2クリップ

投稿2016/07/21 01:59

編集2016/07/21 02:25

ログイン画面を作っています。

【仕様】
①ログインID と パスワード を入力し、ログインボタンを押下するとログイン処理を実行する
②ログイン処理の結果、ログインIDとパスワードが正しかったら、クッキーに ログインID と パスワードを保存し、画面遷移する
③次回ログイン画面を表示したとき、クッキーが保存されていれば、自動的にログインIDとパスワードを入力する

こんな仕様のログイン画面を作っていたのですが問題が発生しました。

##問題発生
他のサイト(phpPgAdmin) にログインIDとパスワードを入れて、ブラウザが パスワードを保存しますか?とたずねてきたときに 保存 する と、
自作のログイン画面のログインID および パスワードに、他のサイトで入れたログインIDとパスワードが自動で入ってしまっています。

##環境
・他のサイト(phpPgAdmin) と、 自作のログイン画面は同じホスト名(+ドメイン名)です。
例)
http://watashino.saito.jp/phpPgAdmin/
http://watashino.saito.jp/web/login.html

##検証
・他のサイト(phpPgAdmin) のログイン入力欄のidやnameは自作のログイン画面のそれと被っていません
・自作のログイン画面の form タグ および、input タグ に autocomplete="off" を記してみましたが、だめでした
・仕様の③で、前回ログインしたときのログインIDとパスワードをJavaScriptにより自動入力するのですが、このクッキーが無い場合は初期値が"" なのですが、これだと ブラウザが勝手に他のサイトのログイン情報で内容を上書きしてしまうようです。
初期値に"" か、空白(" ")以外を設定すると、ブラウザが上書きしないようです。

つまり、"" で JavaScriptで上書きは通用しなかったです・・・

そのときのコードです。(jQueryを利用しています)

jQuery

1jQuery(function ($) { 2 // ================== 3 // ログイン情報オート入力 4 // ================== 5 var log = getCookie(COOKIE_LOGIN); // ログイン情報のクッキー取得 6 if (log == "") { 7 // ログイン情報のクッキーがない時 8 $("#login_id").val(""); // 入力欄には 他サイトのIDが表示される (NG) 9 $("#login_id").val(" "); // 入力欄には 他サイトのIDが表示される (NG) 10 $("#login_id").val("123"); // 入力欄には 123が表示される (OK) 11 $("#passwd").val("1234"); 12 } else { 13 // ログイン情報のクッキーから入力欄に自動入力 14 var bf = new Blowfish(BLOWFISH); 15 var plaintext = bf.decrypt64(log); // 復号化 16 var log = plaintext.split(DIVIDE_CHAR); 17 $("#login_id").val(log[0]); 18 $("#passwd") .val(log[1]); 19 } 20}

##質問
ブラウザ(Chrome)が自動入力したあとにJavaScriptを実行させて、ログインの入力ボックスを""で上書きしてしまえばいいのではないかと考えますが、どうしたらいいのでしょうか?

または、自動入力させないなにか方法はありますか?

以上よろしくお願い致します。

##参考
サイボウズエンジニアのブログに興味深い記事がありました
http://blog.cybozu.io/entry/7452

kei344👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決しました。
Chromeが入力ボックスを変更したときに onChange イベントが発生していました。
なので、

「ログイン入力ボックスのチェンジイベントを監視し、イベントが発生したら中身を""で上書きする」

処理を追加しました。
ただし、”ブラウザが勝手にいれた”ときのみ実行したいので
(他のサイトのログイン入力情報をクリアしてもちゃんと動作するように)

・入力ボックスでキー入力があった場合は監視フラグを下ろす
・ログイン情報クッキーがあった場合はフラグを下ろす
・ブラウザが勝手にいれたときいちどきりでフラグを下ろす

処理を追加しました。(はぁ。)

jQuery

1 // ================== 2 // ログイン情報オート入力 3 // ================== 4 var change_monitor_f = true; // ログイン入力ボックスに変更があった場合、中身を消すフラグ 5 var log = getCookie(COOKIE_LOGIN); // ログイン情報のクッキー取得 6 if (log != "") { 7 change_monitor_f = false; // ログイン情報のクッキーがあるので、フラグ無効 8 var bf = new Blowfish(BLOWFISH); 9 var plaintext = bf.decrypt64(log); // 復号化 10 var log = plaintext.split(DIVIDE_CHAR); 11 $("#login_id").val(log[0]); 12 $("#passwd") .val(log[1]); 13 } 14 $("#login_id").on("change", function(){ 15 if (!change_monitor_f) return false; // 監視フラグ無効時は処理しない 16 var log = getCookie(COOKIE_LOGIN); // ログイン情報のクッキー取得 17 if (log == "") { 18 change_monitor_f = false; // いちどきりなので フラグ無効 19 $("#login_id").val(""); 20 $("#passwd") .val(""); 21 } 22 }); 23 // ================== 24 // キー入力監視 25 // keyclass は、ログインIDまたはパスワード入力ボックスに付けとく 26 // ================== 27 $(".keyclass").keypress( function ( e ) { 28 change_monitor_f = false; // 監視フラグ無効 29 } );

もちろんもっとスマートな方法、そもそも無効にできる方法はまだまだ募集!

投稿2016/07/21 02:53

teratail_user

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問