none
オートコンプリート設定 RRS feed

  • 質問

  • フレームワーク提供のasp:Loginコントロールに対して、表示時のパスワード部(できればパスワードのみ)にオートコンプリートなし設定をしたいのですが、可能ですか?

    試しに、asp:Login内でautocomplete="off"を記述してみましたが、表示変換時のinput内には何も継承されていませんでした。

    なお、以下は承知の上での質問となります。

    -----------------------------------------------------------------------------------------------------

    As of Internet Explorer 11, the autocomplete property is no longer supported for input type=password fields.

    -----------------------------------------------------------------------------------------------------


    2016年1月19日 7:18

回答

  • > Page_load中、MainLogin_LoggingInのいずれもLogin1.FindControl("Password")がnullで、
    > .Attributesでエラーになるのですが、asp:Loginがhtml化されたものに対する操作はでき
    > ないのでしょうか?
    > Password部→html化後のパスワードのid値、Login1部→thisをセットしてみました。

    上記の意味がよく理解できていませんが、ひょっとして、佐祐理さんのレスに従って、

    ((TextBox)Login1.FindControl("Password")).Attributes["autocomplete"] = "off";

    として ASP.NET がレンダリングする Login コントロールのパスワードのテキストボックスの html ソースを、

    <input name="Login1$Password" id="Login1_Password" type="password" autocomplete="off"/>

    となるようにしようとしているのですか?

    であれば、それは質問者さんが調べたように "As of Internet Explorer 11, the autocomplete property is no longer supported for input type=password fields." というのは確からしいのでそうする意味はなさそうだ思うのですが。(それは先の私のレスでもそういったはずですが、見てますか?)

    とにかくやってみたいということであれば JavaScript で、

    <script type="text/javascript">
      //<![CDATA[
        window.onload = function () {
          var element = document.getElementById("Login1_Password");
          element.setAttribute("autocomplete", "off");
        };
     //]]>
    </script>

    のようにしてやれば autocomplete="off" が追加されるはずです。(ブラウザに Login コントロールが表示されたら F12 開発者ツールで見てください)
    • 回答としてマーク sakelin 2016年2月24日 7:02
    2016年2月18日 6:58

すべての返信

  • Page_load中に

    ((TextBox)Login1.FindControl("Password")).Attributes["autocomplete"] = "off";

    とプロパティを設定することでしょうか…?

    2016年1月19日 8:31
  • 既に調べ済みかもしれませんが、以下のようなウラワザ的なことがあるそうです。

    オートコンプリート(パスワードの自動入力)を阻止する
    https://www.softel.co.jp/blogs/tech/archives/4772

    ASP.NET の Login コントロールから生成されるパスワード用のテキストボックスは以下のようになります。

    <input name="Login1$Password" id="Login1_Password" type="password"/>

    質問者さんが調べたように "As of Internet Explorer 11, the autocomplete property is no longer supported for input type=password fields." ということらしいので、ASP.NET 側でこれに autocomplete="off" を追加するようなことをしても意味はなさそうです。

    上に紹介した記事に書いてある方法が質問者さんの環境でも効果があるなら、ASP.NET の Login コントロールで何とかすることを考えるのではなく、記事にある「パスワードダミー」をどのように追加するかを考えた方がよさそうです。

    2016年1月19日 8:53
  • ありがとうございます。返信がシステムエラーできず、遅くなりすみません。

    Page_load中、MainLogin_LoggingInのいずれも

    Login1
    .FindControl("Password")がnullで、.Attributesでエラーになるのですが、asp:Loginがhtml化
    されたものに対する操作はできないのでしょうか?

    Password部→html化後のパスワードのid値、Login1部→thisをセットしてみました。

    2016年2月18日 5:32
  • > Page_load中、MainLogin_LoggingInのいずれもLogin1.FindControl("Password")がnullで、
    > .Attributesでエラーになるのですが、asp:Loginがhtml化されたものに対する操作はでき
    > ないのでしょうか?
    > Password部→html化後のパスワードのid値、Login1部→thisをセットしてみました。

    上記の意味がよく理解できていませんが、ひょっとして、佐祐理さんのレスに従って、

    ((TextBox)Login1.FindControl("Password")).Attributes["autocomplete"] = "off";

    として ASP.NET がレンダリングする Login コントロールのパスワードのテキストボックスの html ソースを、

    <input name="Login1$Password" id="Login1_Password" type="password" autocomplete="off"/>

    となるようにしようとしているのですか?

    であれば、それは質問者さんが調べたように "As of Internet Explorer 11, the autocomplete property is no longer supported for input type=password fields." というのは確からしいのでそうする意味はなさそうだ思うのですが。(それは先の私のレスでもそういったはずですが、見てますか?)

    とにかくやってみたいということであれば JavaScript で、

    <script type="text/javascript">
      //<![CDATA[
        window.onload = function () {
          var element = document.getElementById("Login1_Password");
          element.setAttribute("autocomplete", "off");
        };
     //]]>
    </script>

    のようにしてやれば autocomplete="off" が追加されるはずです。(ブラウザに Login コントロールが表示されたら F12 開発者ツールで見てください)
    • 回答としてマーク sakelin 2016年2月24日 7:02
    2016年2月18日 6:58
  • 【追伸】

    佐祐理さんが提案されたサーバー側で設定するコード:

    protected void Page_Load(object sender, EventArgs e)
    {
      ((TextBox)Login1.FindControl("Password")).Attributes["autocomplete"] = "off";
    }

    も試して見ました。"Password" では見つからないと思っていたのですが、結果は同様に、

    <input name="Login1$Password" id="Login1_Password" type="password" autocomplete="off"/>

    となりました。

    質問者さんのコードで Login1.FindControl("Password") が null になる理由は分かりませんが、何でもいいからとりあえず autocomplete="off" を追加して試してみたいということであれば、JavaScript で追加して試してみてはいかがですか。


    • 編集済み SurferOnWww 2016年2月18日 7:27 一部訂正
    • 回答としてマーク sakelin 2016年2月24日 7:02
    • 回答としてマークされていない sakelin 2016年2月24日 7:02
    2016年2月18日 7:26
  • SurferOnWwwさん

    ありがとうございます。

    何でもいいからとりあえず autocomplete="off" を追加して試してみたいということだったので、javascriptで対応することにしました。

    page_loadのFindControlで見つからないのは解せませんが。

    • 回答としてマーク sakelin 2016年2月24日 7:02
    • 回答としてマークされていない sakelin 2016年2月24日 7:02
    2016年2月24日 7:01