LastPassブラウザ拡張機能がHTMLベースのフォームに「username」という名前の入力フィールドを入力しないようにする方法はありますか?
これは隠しフィールドなので、ソフトウェアがこのフィールドを目的に使用しないようにします。
<input type="text" name="username" id="checkusername" maxlength="9" value="1999" class="longinput" style="display:none">
解決策は、「入力フィールドの名前を変更する」ようなものであってはなりません。
次の2つの条件を満たす必要があります。
autocomplete="off"
属性が必要ですSettings > Advanced > Allow pages to disable autofill
したがって、これはユーザーと開発者の両方に依存します。
私のために働いたのは、<form id="affiliate-search-form">
のようなフォームのIDにWord "-search-"を含めることであり、lastpassはその要素をフォーム入力に追加しません。 <form id="search">
のような単純なもので動作しますが、<form id="se1rch">
では動作しません
私はここでパーティーに遅れていることは知っていますが、フォームを台無しにすることからラストパスを止めようとしたときにこれを見つけました。 @takeshinは、オートコンプリートでは十分ではないという点で正しいです。シンボルを隠すためだけに、以下のハックをしました。きれいではありませんが、アイコンを取り除きました。
ラストパス開発者がこれを読んでいる場合は、使用する属性を教えてください。このようなものに頼る必要はありません。
form[autocomplete="off"] input[type="text"] {
background-position: 150% 50% !important;
}
Ithinklastpassはautocomplete="off"
入力の属性ですが、100%確信はありません。
[〜#〜] edit [〜#〜]他の人が指摘したように。これは、ユーザーがこれを受け入れるように構成された最後のパスを持っている場合にのみ機能します。
私にとっては、text
に等しいtype=search
か、role=note
を使用していました。
LastPass-JavaScriptを確認することはできますが、それは巨大です。いくつかの回避策を見つけることができるかもしれません。4つの入力タイプのみを確認したので、input type=search
が1つの回避策になります。
!c.form && ("text" == c.type || "password" == c.type || "url" == c.type || "email" == c.type) && lpIsVisible(c))
また、無視されると思われるrole
-キーワードもあります。
var c = b.getAttribute("role");
switch (c) {
case "navigation":
case "banner":
case "contentinfo":
case "note":
case "search":
case "seealso":
case "columnheader":
case "presentation":
case "toolbar":
case "directory":`
LastPassのonloadwff.js
を確認し、26.960行のコードを準備します:)
入力IDに「検索」を追加
<input type="text" name="user" id="user-search"/>
パーティーに少し遅れましたが、フォームを次のように変更してこれを達成しました:
<form autocomplete="off" name="lastpass-disable-search">
私はこれが検索フォームだと考えることへの最後のバカだと思います。ただし、これはパスワードフィールドでは機能しません!この場合、Lastpassは名前フィールドを無視します。
私がこれを行うことができた唯一の方法は、フォームの上部に次を直接追加することです。
<form autocomplete="off">
<div id="lp" ><input type="text" /><input type="password" /></div><script type="text/javascript">setTimeout(function(){document.getElementById('lp').style.display = 'none'},75);</script>
</form>
それは厄介なちらつきを引き起こしますが、自動入力ナンセンスを削除します-それでも「パスワードを生成」ウィジェットを表示します。 LastPassは、domreadyになるまで待機してから、表示されるパスワードフィールドがあるかどうかを確認するため、上のモックフィールドを非表示または縮小することはできません。
このES6スタイルのコードは、すべての入力コントロールにdata-lpignoreを追加したので役立ちました。
const elements = document.getElementsByTagName("INPUT");
for (let element of elements) {
element.setAttribute("data-lpignore", "true");
}
特定のINPUTコントロールにアクセスするには、次のように記述できます。
document.getElementById('userInput').setAttribute("data-lpignore", "true");
または、クラス名でそれを行うことができます:
const elements = document.getElementsByClassName('no-last-pass');
for (let element of elements) {
element.setAttribute("data-lpignore", "true");
}
-search renameを試しましたが、何らかの理由で機能しませんでした。私のために働いたのは次のとおりです:
FFおよびChromeの最新バージョンで試用およびテストしました。
ここのオプション(オートコンプリート、data-lpignoreなど)のいずれも、残念ながらLastPassがフォームフィールドを自動入力することを妨げませんでした。私はこの問題に対してより大胆なアプローチを取り、代わりにJavaScriptを介して入力name
属性を非同期に設定しました。次のjQuery依存関数(フォームのonsubmitイベントハンドラーから呼び出される)がトリックを行いました。
function setInputNames() {
$('#myForm input').each(function(idx, el) {
el = $(el);
if (el.attr('tmp-name')) {
el.attr('name', el.attr('tmp-name'));
}
});
}
$('#myForm').submit(setInputNames);
フォームでは、同等のname
属性の代わりにtmp-name
属性を使用しました。例:
<form id="myForm" method="post" action="/someUrl">
<input name="username" type="text">
<input tmp-name="password" type="password">
</form>
NgMessagesがフィールド検証エラーメッセージを正しく表示するために、name
属性を持つフォームフィールドに依存するAngularJSのために上記の問題にまだ遭遇しました。
最終的に、LastPassがパスワード変更フォームのパスワードフィールドに入力しないようにする唯一の解決策は、次のとおりです。
input[type=password]
の使用を完全に避け、かつ私の場合、通常フォームを送信できる必要があるため、元のソリューションを使用してフィールド名を「ジャストインタイム」に更新しました。パスワード入力フィールドの使用を避けるため、 このソリューション は非常にうまく機能していることがわかりました。