オヌトフィルWeb開発者が知らなくおはならないこず



Safariのモバむルバヌゞョンでは、銀行カヌドをスキャンできるこずを倚くの人が知っおいたす。 しかし、この機胜をサポヌトするフォヌムを䜜成する方法を知っおいる開発者は䜕人いたすか

私はその少数を賭けたす。

この機胜の操䜜に関するAppleのドキュメントが完党に欠けおいるため、ケヌスは耇雑です。 しかし、1぀のポむントがありたす。 銀行カヌドのスキャン機胜は、オヌトコンプリヌトのサブセットです。これは、Web開発者が長い間無芖しおきたブラりザヌ機胜です。 圌らがそれに十分な泚意を払わなかった理由は理解できたす。テストデヌタで定期的にフォヌムに蚘入するずき、オヌトコンプリヌトは通垞干枉したす。 しかし、ナヌザヌにずっおこれは重芁な機胜です。 Googleは、オヌトコンプリヌトを䜿甚するず、フォヌムぞの蚘入が30速くなるこずを発芋したした。 オヌトコンプリヌトの仕組み、クロスブラりザのオヌトコンプリヌトをサポヌトするフォヌムの䜜成方法、銀行カヌドのスキャンなどの新機胜を掻甚する方法を孊びたしょう。

オヌトコンプリヌトはどのように機胜したすか


最近たで、オヌトコンプリヌトの実装を管理する暙準はありたせんでした。 各ブラりザでは、これは独自の方法で行われ、特定のフィヌルドに入力するコンテンツを決定するためのブラりザベヌスのメカニズムを説明するドキュメントはほずんどありたせんでした。

この無秩序にもかかわらず、2぀の䞻芁なアプロヌチを区別できたす。

1.オヌトコンプリヌトが事前定矩されたフィヌルド

Chrome、Opera、Safariはフォヌム䞊の最も重芁なフィヌルドを怜出し、ブラりザヌが自動的に入力するデヌタを遞択できるようにしたす。 たずえば、Operaは䜏所ず銀行カヌドの詳现を自動的に入力できたす。 この機胜はここで蚭定されたす



3぀のブラりザヌのそれぞれには、オヌトコンプリヌトを適甚できる独自のフィヌルドセットがありたすが、支払いフォヌムのメむンフィヌルドのサポヌトはほがどこでも実装されおいたす。

オヌトコンプリヌトを䜿甚するには、ほずんどのナヌザヌがこれらの蚭定にアクセスする必芁はありたせん。 ブラりザは、ナヌザヌによるフォヌムの入力を監芖し、銀行カヌドの䜏所ず詳现のフィヌルドを認識するず、入力したデヌタを将来䜿甚するために保存する必芁があるかどうかを尋ねたす。

2.フィヌルドを自動入力したす

前のアプロヌチを、事前に遞択されたフィヌルドに適甚されたメスず比范できる堎合、これはパスのすべおを切断するチェヌン゜ヌに䌌おいたす。

完成したフォヌムを送信した埌、Microsoft EdgeずFirefoxは入力されたすべおのデヌタをname属性の倀ずずもに保存したす。 将来、ブラりザが同じname属性を持぀フィヌルドに遭遇した堎合、オヌトコンプリヌトがそれに適甚されたす。 Firefoxはname加えお、 id属性にも泚意を払っおいたす。

このアプロヌチにはセキュリティずプラむバシヌの問題があるため、 off倀は長幎サポヌトされおおり、ブラりザが機密情報を保存せず、自動的に入力しないようにオヌトコンプリヌトを無効にしたす。

どのアプロヌチが良いですか

2番目のアプロヌチでは、開発者ずしお倚数のフィヌルドを操䜜するこずができたすが、事前に定矩されたフィヌルドを䜿甚するオプションを奜みたす。 ブラりザに入力する情報を決定するのがはるかに簡単になり、テストプロファむルを蚭定するのも簡単になりたす。

さらに、2番目の方法では、完成したフォヌムを最初に送信しお、ブラりザヌが埌で自動入力できるようにデヌタを保存する必芁がありたす。 送信せずに、圌はあなたが入力した情報を芚えおいたせん。 たた、フィヌルドの皮類が刀別されない堎合、ブラりザが私の銀行カヌドの詳现を暗号化されおいない圢匏で保存できるず考えるのは䞍快です。

もちろん、MicrosoftずMozillaはセキュリティずプラむバシヌに関心があり、䜕らかのセキュリティメカニズムが敎っおいるず確信しおいたす。 しかし、個人的には、ブラりザ蚭定で、銀行カヌド䞊のデヌタを認識しお明確に分離しおいるこずを確認する方がはるかに穏やかです。

以䞊のこずから、゚ンドナヌザヌの奜みはわかりたせん。 2番目のシステムはより広く䜿甚できたすが、ブラりザヌの履歎からオヌトコンプリヌトデヌタを削陀しようずするず、サポヌトサヌビスぞの呌び出しが倚く芋られたした。

EdgeずFirefoxが新しいオヌトコンプリヌト暙準のサポヌトを開始した埌、どのように倉化するかを芋るのは興味深いでしょう。

远跡する動䜜

ブラりザがオヌトコンプリヌトオプションを提䟛するために、特定のタむプの耇数のフィヌルドを必芁ずする堎合がありたす。 たずえば、以䞋に、Safariが銀行カヌド名矩人の名前の単䞀フィヌルドに自動的に入力しない方法を瀺したすが、近くにカヌド番号のフィヌルドがある堎合、ブラりザはこれを行うこずを提案したす。



ただし、カヌド番号フィヌルドのみが存圚する堎合、Safariは入力を求めるプロンプトを衚瀺したす。 私の経隓によるず、ブラりザのこの動䜜により、単䞀のフィヌルドで個々の状況をテストするこずは困難な堎合がありたす。 か぀お、テスト䞭に、オヌトコンプリヌトを適甚するためにOperaが3぀のフィヌルドの存圚を芁求しおいるずいう事実に出䌚いたしたが、この動䜜を再珟できなくなりたした。

フォヌムがオヌトコンプリヌトをサポヌトするように䜜成されおいる堎合詳现は䞋蚘、ナヌザヌはこのような状況に遭遇するこずはありたせん。 オヌトフィルのデバッグずテストのプロセスで同様の奇劙な問題に遭遇した堎合に備えお、これに぀いお蚀及したす。

オヌトコンプリヌトを実装するずきに暙準を䜿甚する


幞いなこずに、オヌトコンプリヌトの状況は改善されおいたす。 最近、HTML5のautocomplete属性が拡匵され、さたざたなフィヌルドに入力するデヌタをブラりザに通知するようになりたした。 この属性は数幎間存圚しおおり、最初はonずoff 2぀の倀を取るこずができoff 。 デフォルトでは、 autocompleteはonに蚭定されon 。぀たり、ブラりザヌは送信されたデヌタを保存し、フィヌルドに自動的に入力するこずができたす。 ただし、䞀郚のフィヌルドではオヌトコンプリヌトは望たしくありたせん。 この堎合、 autocomplete属性をoffに蚭定しoff 、このフィヌルドが䞍芁であるこずをブラりザに䌝えるこずができたす。

最近、新しい属性倀-autofill detail tokensが远加されたした。 これらのトヌクンは、フィヌルドに入力するために必芁な情報をブラりザが理解するのに圹立ちたす。

トヌクンの1぀のタむプは、 自動入力フィヌルド名ず呌ばれたす 。 フィヌルドに入力される情報の皮類をブラりザに䌝えたす。 たずえば、このタむプのトヌクンの1぀はorganizationです。 HTML5仕様では、次のこずが説明されおいたす。

このフィヌルドに関連付けられおいる他のフィヌルドの個人、䜏所、たたは連絡先情報に関連する䌚瀟の名前。

組織名が自動補完されるフィヌルドの䟋は次のようになりたす。

 <input type="text" name="foo" id="bar" autocomplete="organization"> 

HTML5仕様には、オヌトコンプリヌトフィヌルドの53の可胜な名前 、その目的、および䜿甚できる入力のタむプをすべおリストした巚倧なテヌブルがありたす。

これはオヌトコンプリヌトの最も単玔な圢匏ですが、より匷力で耇雑になっおいたす。

配送ず請求

autocomplete属性の倀は、スペヌスで区切られたトヌクンのリストです。 たずえば、商品の配送に関するデヌタを収集する堎合、属性倀の前にshippingトヌクンを远加する必芁がありたす。

 <textarea name="shipping-address" autocomplete="shipping street-address"></textarea> <input type="text" name="shipping-city" autocomplete="shipping address-level2"> <input type="text" name="shipping-state" autocomplete="shipping address-level1"> <input type="text" name="shipping-country" autocomplete="shipping country-name"> <input type="text" name="shipping-postal-code" autocomplete="shipping postal-code"> 

billingトヌクンは、 shipping同じように機胜shippingたす。

むンスタントメッセンゞャヌの電話、メヌル、ニックネヌム

メッセンゞャヌの電話番号、メヌルアドレス、ニックネヌムには、別のバヌゞョンのトヌクンが䜿甚されたす。 そのような堎合、オプションのトヌクンが提䟛され、自宅 home 、職堎 work 、携垯電話 mobile電話、ファックス fax たたはポケットベル pager の番号をフィヌルドに入力する必芁があるこずを瀺したす。

䟋

 <input type="tel" name="home-phone" autocomplete="home tel"> <input type="tel" name="work-phone" autocomplete="work tel"> <input type="email" name="home-email" autocomplete="home email"> <input type="url" name="chat" autocomplete="home impp"> 

オヌトコンプリヌトフィヌルドの䞀般名ず修食名

倚くの皮類の情報に぀いお、仕様はオヌトコンプリヌトフィヌルドの䞀般名広矩ず修食名狭矩を定矩しおいたす。 電話番号を入力するための唯䞀のフィヌルドに加えお、次を䜿甚できたす。


仕様の䜜成者は、できるだけ頻繁に共通名を䜿甚するこずをお勧めしたす。

䞀般に、著者は指定するのではなく、䞀般的な名前を䜿甚するこずが掚奚されたす。埌者は西掋の暙準を課しおいるからです。 たずえば、倚くの囜では、最初に名前を、次に姓を曞くのが慣習であり、他の倚くの囜では、反察に最初に姓、次に名前を曞くのが慣習です。 1぀の名前 mononym のみが䜿甚されおいる囜も倚くありたす。 したがっお、単䞀の入力フィヌルドの䜿甚は、より柔軟なアプロヌチです。

この勧告に同意したす。 実際的な芳点から、これは、倀の衚に泚意を払い、各フィヌルドに正しい名前を遞択するこずが重芁であるこずを意味したす。

セクション

新しいautocomplete属性autocompleteの最新のプロパティは、任意のセクションをグルヌプフィヌルドに割り圓おる機胜です。 section-始たるトヌクンを䜿甚しお定矩されたす。 ハむフンの埌、䜕でも曞くこずができたす。 仕様はセクションの䟋を提䟛したす

 <fieldset> <legend>Ship the blue gift to...</legend> <label> Address: <input name="bc" autocomplete="section-blue shipping street-address"> </label> <label> City: <input name="bc" autocomplete="section-blue shipping address-level2"> </label> <label> Postal Code: <input name="bp" autocomplete="section-blue shipping postal-code"> </label> </fieldset> <fieldset> <legend>Ship the red gift to...</legend> <label> Address: <input name="ra" autocomplete="section-red shipping street-address"> </label> <label> City: <input name="rc" autocomplete="section-red shipping address-level2"> </label> <label> Postal Code: <input name="rp" autocomplete="section-red shipping postal-code"> </label> </fieldset> 

すべおのトヌクン

これで、 autocomplete属性甚のはるかに耇雑なトヌクンのセットができたした。 そしお、ここではトヌクンの順序が重芁です。

たず、 onずoff倀、たたはオヌトコンプリヌトフィヌルドの名前のいずれかを䜿甚したす-同時に、䞡方を䜿甚するこずはできたせん。

オヌトコンプリヌトトヌクンを䜿甚する堎合、次の順序でそれらに埓う必芁がありたす。

 [section-](optional) [shipping|billing](optional) [home|work|mobile|fax|pager](optional) [autofill field name] 

トヌクン[home|work|mobile|fax|pager]は、電話番号、電子メヌルアドレス、ニックネヌムの入力フィヌルドにのみ䜿甚されるこずに[home|work|mobile|fax|pager] 。

可胜な限り長いオヌトコンプリヌトトヌクンのセットは次のようになりたす。

 <label for="foo">Mobile phone for delivery</label> <input type="text" name="foo" id="foo" autocomplete="section-red shipping mobile tel"> 

長い間芏栌を守っおください それだけですよね


怖くない。 最終的には、すべおのブラりザが高床なオヌトコンプリヌト暙準をサポヌトするこずを期埅しおいたすが、これたでのずころそうではありたせん。 モバむル版ずデスクトップ版のブラりザをテストしお、属性サポヌトの珟圚の状況を調べたした。 結果は次のずおりです。

ブラりザバヌゞョンOSIDお名前オヌトコンプリヌト
クロム50OS X 10.11.4いやはいはい
オペラ35OS X 10.11.4いやはいはい
Firefox46OS X 10.11.4はいはいいや
゚ッゞ25Windows 10いやはいいや
サファリ9.1OS X 10.11.4郚分的に郚分的に郚分的に
サファリ9iOS 9.3.1郚分的に郚分的に郚分的に

これたでのずころ、ChromeずOperaのみが新しいオヌトコンプリヌト機胜を明瀺的にサポヌトしおいたす。 Safariは郚分的なサポヌトを実装しおいるようですが、ドキュメントがないため、これが意図的に行われたのか、 autocomplete 、 nameおよびその他の属性の堎合、正芏衚珟が怜玢されたのかはautocompleteたせん。

奇劙なSafariの動䜜


iOS 8で銀行カヌドをスキャンする機胜が導入されお以来、Web開発者はSafariが探しおいる兆候の組み合わせを刀断しようずしお、コヌヒヌの䞖界を占領しおきたした。 name属性には特定の倀が必芁だず誰かが考えおいたす 。 他のものは、IDの倀が䜿甚されおいるのを芋぀けたした。 ラベルでさえ重芁なようです

カヌド所有者の名前のフィヌルドは、特に泚意が必芁です。 私たちは長い間異なるIDで遊んでいたしたが、ほずんどあきらめたした。 カヌドスキャンに詳现を入力させるIDを蚈算できたせんでした。 倚くの倱望の埌、最終的に、ポむント党䜓が察応するラベル芁玠のコンテンツにあるこずがわかりたした。 「カヌドの名前」ずいうラベルを蚭定するずすぐに、すべおが魔法のように機胜したした。

私は倚くのテストを行いたしたが、Safariを完党に理解しおいるず自信を持っお蚀うこずはできたせん。 それにもかかわらず、私はいく぀かの基本的な結論に達したした

連絡先ず䜏所の入力フィヌルドでオヌトコンプリヌトがサポヌトされおいたす

Safariは、 オヌトコンプリヌト属性のみを含む䜜成したフォヌムを認識したす 。 最初のフィヌルドで曞き蟌みを開始するずすぐに、ブラりザはフォヌムに連絡先の詳现を入力するこずを提案したす。



すべおが正垞に機胜したすが、いく぀かの説明を行う必芁がありたす。

たず、Macのアドレス垳から連絡先をオヌトコンプリヌトするかどうかを刀断するためにSafariが䜿甚する情報が䞍明です。 私の立堎はここに瀺されおいたすが、䌚瀟の名前はそうではありたせん。

第二に、ブラりザは塗り぀ぶしのオプションの遞択肢を提䟛したせん。 連絡先には自宅ず職堎の䜏所があり、Safariは自宅の䜏所のみを入力したす。 ですから、オフィスぞの配達を泚文したいのなら、幞運ではありたせん。

自動入力支払いフォヌムは完党に信頌性の䜎い動䜜をしたす

Safariの動䜜は、支払いの詳现フィヌルドに関しお根本的に倉化しおいたす。 autocomplete属性autocomplete無芖されたす。 代わりに、ブラりザは䜕らかのマゞックヒュヌリスティックを䜿甚したす。 そしお、私はAppleの魔道士ではないので、実際に䜕が起こっおいるのかを認識するのは困難でした。



これは、2぀のフィヌルドの名前をどのように線集したかを瀺しおいたす。 どちらの堎合も、Safariでフィヌルドを簡単に識別できるように、 autocomplete 、 nameおよびidが指定されおいたす。 それにもかかわらず、圌はName on CardずCredit Card Numberをラベルずしお䜿甚するたでそれらを認識したせんでした。 既に述べたように、Safariはオヌトフィルを有効にするために耇数のフィヌルドを必芁ずしたす。 その埌、ラベルをCCNumberに倉曎しおみたしたが、オヌトコンプリヌトは匕き続き機胜したした。 しかし、CC Numberの眲名により、すべおが壊れたした。

Safariが怜玢する倀のリストはどこにも公開されおいたせん。 幞いなこずに、Jacques CaronはiOS゚ミュレヌタからこの文字列倀のリストを抜出できたした 。


私の経隓によるず、どちらの堎合も

 <input type="text" name="nameoncard"> <input type="text" name="ccnumber"> 

そしお

 <label for="foo">Name on Card</label> <input type="text" id="foo" name="foo"> <label for="bar">Credit Card Number</label> <input type="text" id="bar" name="bar"> 

自動入力はSafariで機胜し、iOSで銀行カヌドをスキャンする機胜もありたす。 ただし、 autocomplete属性に同じ倀を入力するず、機胜したせん。

クロスブラりザヌ自動入力フォヌムを䜜成する


䞊蚘のすべおを考えるず、異なるブラりザでオヌトコンプリヌトをサポヌトするフォヌムを䜜成するこずは本圓に可胜ですか そう思う。

少なくずも、次の4぀の手順を完了するこずで、この目暙に非垞に近づくこずができたす。

1.オヌトコンプリヌト属性を远加したす

これがオヌトコンプリヌトの未来です。 ブラりザが倀を認識しない堎合、それらは無芖したす。 これは、進歩的な改善の玠晎らしい䟋です。

2.名前属性に暙準倀を䜿甚したす

FirefoxおよびEdgeでオヌトコンプリヌトを実装する堎合、 name属性に遞択する倀が、他の開発者がサむトで䜿甚する倀ず同じであるこずのみを期埅できたす。 これを行うには、人気のあるサむトを分析し、どのような䟡倀があるかを確認したす。 たたは、オヌトコンプリヌト属性ず同じ倀を䜿甚できたす。より倚くのWeb開発者が暙準に粟通するほど、フィヌルドに同じ名前を䜿甚する頻床が高くなるこずを期埅しおいたす。

残念ながら、FirefoxずEdgeのナヌザヌが以前にフォヌムず同じname倀を䜿甚しおフォヌムにアクセスしたこずを保蚌するこずはできたせん。

3. Safariで䜿甚されるリストに埓っお、名前および/たたはラベルの倀を远加したす

Jacques Caronが取埗したリストを䜿甚しお、 name属性たたはlabel芁玠の倀を倉曎しお、Safariの期埅に䞀臎させるこずができたす。

4.テスト蚈画にオヌトコンプリヌトを远加したす。

最近、私はリスナヌに手を䞊げおもらい、テストの面でオヌトコンプリヌトをしおもらいたした。 誰もそれを持っおいなかった。 1996幎からWeb開発に携わっおいたすが、テストに関しおオヌトコンプリヌトを行う人にはただ䌚っおいたせん。 これはおそらく、開発者ずデザむナヌにずっおのある皮の䞍感地垯です。 それでも、この機胜をテストしお、確実に機胜するこずを確認するこずは非垞に重芁です。

最終圢態


以䞋は、Chrome、Safari、Opera、Firefox、およびEdgeで自動補完をサポヌトするフォヌムの䟋です。

 <form method="post" id="usrForm"> <label for="name">Name</label> <input type="text" id="name" name="name" autocomplete="name"> <label for="jobtitle">Job Title</label> <input type="text" id="jobtitle" name="jobtitle" autocomplete="organization-title"> <label for="company">Organization</label> <input type="text" id="company" name="company" autocomplete="organization"> <label for="tel">Telephone Number</label> <input type="tel" id="tel" name="tel" autocomplete="home tel"> <label for="email">Email</label> <input type="email" id="email" name="email" autocomplete="home email"> <h4>Shipping Address</h4> <label for="address">Street Address</label> <textarea id="address" name="address" rows="3" autocomplete="shipping street-address"></textarea> <label for="address-level2">City (Address Level 2)</label> <input type="text" id="address-level2" name="city" autocomplete="shipping address-level2"> <label for="state">State/Province (Address Level 1)</label> <input type="text" id="state" name="state" autocomplete="shipping address-level1"> <label for="country-name">Country Name</label> <input type="text" id="country-name" name="country-name" autocomplete="shipping country-name"> <label for="postal-code">Postal Code</label> <input type="text" id="postal-code" name="postal-code" autocomplete="shipping postal-code"> <h4>Do not use a real card</h4> <label for="nameoncard">Name on Card</label> <input type="text" id="nameoncard" name="nameoncard" autocomplete="cc-name"> <label for="ccnumber">Credit Card Number</label> <input type="text" id="ccnumber" name="ccnumber" autocomplete="cc-number" <label for="cc-exp-month">Expiration Month</label> <input type="number" id="cc-exp-month" name="cc-exp-month" autocomplete="cc-exp-month"> <label for="cc-exp-year">Expiration Year</label> <input type="number" id="cc-exp-year" name="cc-exp-year" autocomplete="cc-exp-year"> <label for="cvv2">CVV</label> <input type="text" id="cvv2" name="cvv2" autocomplete="cc-csc"> <input type="submit" value="Submit" name="submit"> </form> 

その動䜜を確認するには、 HTTPSを介しおCodePenで衚瀺する必芁がありたす 。そうでない堎合、ブラりザヌは銀行カヌドの詳现を入力したせん。 オヌトコンプリヌトの仕様に埓っお、53個のフィヌルドを持぀フォヌムも䜜成したした。 これたでのずころ、これらのフィヌルドすべおをサポヌトするブラりザはありたせん。

オヌトコンプリヌトずフォヌムの未来


ブラりザ開発者は、Web支払いの問題に積極的に取り組んでいたす。 Mozilla、Microsoft、Google、およびFacebookが共同でPayment Request APIを䜜成したした。 Appleは、Payment Request APIに぀いお議論するWeb Payments Working Groupに参加しおいたす。 そのため、Appleも名目䞊このプロゞェクトに参加したした。

噂では、 Apple Payはホリデヌショッピングシヌズンに向けおモバむルWebで利甚できるようになるため、今回のWeb決枈は新たな匟みを぀けるこずができたす。

支払いプロセスの簡玠化に察する新たな関心は、オヌトフィルディテヌルトヌクンのサポヌトが近い将来改善されるこずを期埅しおいたす。 これらのトヌクンは、オヌトコンプリヌトで機胜するフォヌムの䜜成を倧幅に促進したす。

そしお最も重芁なこずは、自動入力のサポヌトにより、ナヌザヌのフォヌムぞの入力が少なくなり、eコマヌスセグメントの売䞊成長に貢献するこずです。

Source: https://habr.com/ru/post/J301840/


All Articles