前提・実現したいこと
ページ毎(URL毎)にパスワードが設定できるサイトを作成しています。
しかしあるページでパスワードを設定すると、Chromeで「パスワードを更新しますか?」のポップアップが邪魔なります。
このポップアップは「サイトのパスワード」であって、「ページ毎のパスワード」ではないためです。
このポップアップを表示させないためには、どうしたらよろしいでしょうか?
発生している問題
ポップアップが邪魔
試したこと
■ページ毎にブラウザのパスワード保存を分ける方法
これがあればベストですが、見つかりませんでした。
■自分で隠す方法1
input type="text"
として表示し、自分で隠す方法を試しました。
これならブラウザから「これはパスワードだ」と扱われないようになり、ポップアップは表示されません。
まずHTMLです。
html
1<div class="password_box"> 2 <input type="text" class="inp_password" data-input_type="password"> 3 <button type="button" class="is_view">表示</button> 4 <button type="button" class="">非表示</button> 5</div>
しかし入力値を自分で隠すのが難しいです。
以下ローカルストレージに保存しようとしましたが、タイミングがヘタなのか、全て「※」マークで上書きされてしまいます。なので表示・非表示の切り替えが効きません。
jquery
1$(document).on('input change', '.inp_password', function(){ 2 3 const 4 inp_val = $(this).val(), 5 input_type = $(this).data('input_type'), 6 inp_len = inp_val.length; 7 8 // 隠す 9 if ( input_type === 'password' ) { 10 $(this).val( '*'.repeat(inp_len) ); 11 } 12 13 // 隠したので保持 14 localStorage.setItem( 'inp_password', inp_val ); 15 16}); 17 18$(document).on('click', 'button', function(){ 19 20 $inp = $(this).closest('.password_box').find('input'); 21 22 $(this).toggleClass('is_view'); 23 24 if ( $(this).hasClass('is_view') ) { 25 $inp.data( 'input_type', 'text' ); 26 27 // 保持しておいた値を表示 28 const current_val = localStorage.getItem( 'inp_password' ); 29 $inp.val( current_val ); 30 31 } else { 32 $inp.data( 'input_type', 'password' ); 33 34 // 隠す 35 const inp_len = $inp.val().length; 36 $(this).val( '*'.repeat(inp_len) ); 37 } 38});
■自分で隠す方法2
上記はローカルストレージへの保存のタイミングがうまくいかないため、ローカルストレージをやめて、inputの上にフィルムとしての要素をかぶせる方法を試しました。
しかしそのフィルムがあるせいでinputを操作できなくなり、これも断念しました。
かなり苦労しています。どなたかご回答宜しくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/13 10:07