10

純粋な JavaScript で記述された Web アプリケーションがあります (すべての JS ファイルをロードするドキュメントを除いて、事前に生成された HTML はありません)。

このアプリには、document.ready イベント イベントがトリガーされたときに動的に作成されるログイン フォームが含まれています。ブラウザをだまして「パスワードを覚えていますか?」というメッセージを表示させます。ajax を使用してログインする前に、非表示の iframe にログイン フォームを投稿してダイアログを表示します (Firefox では、パスワードは保存されたパスワード リストに表示されるため、この部分は明らかに機能します)。ただし、後でログイン画面が再度読み込まれた後、保存されたパスワードが入力されることはありません。時間。Firefox と Safari でも同じことが起こります。

自動入力をトリガーするためにできること、または呼び出すことができる関数はありますか?

更新: 自動入力は最初のページの読み込み時に Safari で機能しますが、ユーザーがログアウトし、ページのリロードなしでログイン フォームが再作成されたときは機能しません。Firefox では機能しません。

4

3 に答える 3

4

フォーム要素を 1 つの要素にラップするだけでなく、formすべての入力 (場合によってはフォームも) が変更されない固有nameの属性を持っていることを確認してください。id名前はおそらくパスワードなどのようなわかりやすい名前にする必要passwordがあります。ブラウザーがこの情報をどの程度使用するかはよくわかりませんが、標準の名前を使用すると、「自動提案」/「魔法の杖」機能がうまく機能する可能性があります。

そしてもちろん、autosuggest/autofill 属性を false に設定していないことを確認する必要があります (js フレームワークを使用している場合、何らかの理由でそうする可能性があります)。

3 つ目の可能性は、スクリプトがフォームを読み込んでページに書き込む前に、一部のブラウザーがオートフィルを実行する可能性があることです。フォームの静的な HTML バージョンを作成してみて、それが機能するかどうかを確認してください。

最も簡単な解決策 (静的フォームが機能する場合) は、ログアウト時にページを強制的にリロードすることです (おそらく、ログアウト後に実行中の JavaScript の「状態」を破棄したいので、更新は本当に良いことです)

于 2010-04-19T07:07:38.453 に答える
1

一部のブラウザーでは、ローカルのユーザー名とパスワードの保存を有効にするために「フォーム」タグが必要です。AJAXアプリケーションでも同じ問題があり、私の場合は追加しました

<form>...</form>

タグ。

于 2010-04-12T14:41:50.507 に答える
0

同様のトリックを使用できませんか? iframe を使用してフォームをロードし、ログイン フォームが送信されたときに、実際には、保存されたパスワードを含む iframe フォームを送信します。

「パスワード」を表示フォームに表示するには、iframe フォームでパスワードの長さを測定し、表示フォームのパスワード フィールドに同じ数の * を入力できると思います。

于 2010-04-12T14:13:56.000 に答える