空のHTMLフォームアクションを使用して現在のページにポストバックすることに「ベストプラクティス」の応答をだれかができるかどうか疑問に思っています。
空白のHTMLフォームアクションがここで何をするかを尋ねる投稿があり、このようないくつかのページはそれが良いことを示唆していますが、人々がどう思うか知りたいです。
<form name="xyz" >
)。独自にアクションを送信します。
空のHTMLフォームアクションを使用して現在のページにポストバックすることに「ベストプラクティス」の応答をだれかができるかどうか疑問に思っています。
空白のHTMLフォームアクションがここで何をするかを尋ねる投稿があり、このようないくつかのページはそれが良いことを示唆していますが、人々がどう思うか知りたいです。
<form name="xyz" >
)。独自にアクションを送信します。
回答:
あなたができる最善のことは、action属性を完全に省くことです。省略した場合、フォームはドキュメントのアドレス、つまり同じページに送信されます。
空のままにしておくこともできます。HTMLのフォーム送信アルゴリズムを実装するブラウザは、それをドキュメントのアドレスと同等に扱います。これは、主にブラウザが現在動作しているためです。
8.
actionをsubmitter要素のactionとします。
9.
actionが空の文字列の場合、actionをドキュメントのアドレスにします。注:この手順はRFC 3986の意図的な違反であり、ここではベースURL処理が必要になります。この違反の原因は、レガシーコンテンツとの互換性を求めることです。[RFC3986]
これは間違いなく、現在のすべてのブラウザで動作しますが、(一部の古いブラウザで期待どおりに動作しない場合があります「」属性をブラウザが=空のアクションとの奇妙な物事を行う「」理由である、)スペックは強く、それが空に残してから作家を阻止します:
コンテンツの属性は、指定された場合、ある値持っている必要があります潜在的にスペースで囲まれた有効な非空のURLを。
action
formaction
action=""
。私の回答を参照してください...
実際、現在のHTML5ドラフトのフォーム送信サブセクションでは許可されていませんaction=""
。仕様に反しています。
コンテンツの属性は、指定された場合、有効な値は持っている必要があり、空ではない潜在的にスペースで囲まれたURLを。(強調を追加)
action
formaction
中に引用されたセクションメルカトルの答えは上の要件である実装ではなく、作者。著者は著者の要件に従う必要があります。この仕様の読み方を引用するには:
特に、作成者や作成者が作成したドキュメントなどのプロデューサーに適用される適合要件があり、Webブラウザーなどのコンシューマーに適用される適合要件があります。それらは、彼らが必要とするものによって区別することができます:プロデューサーの要件は何が許可されているかを示し、コンシューマーの要件はソフトウェアの動作方法を示します。
空のURLを許可していたHTML4からの変更は、「ブラウザーが空のaction=""
属性で奇妙なことをする」ために行われました。変更の理由を考慮すると、HTML4でも変更しないことがおそらく最善です。
action
フォームがドキュメントのアドレスに送信する必要があることを示すために、属性が完全に存在しないようにすることはできますか?「明記されていれば」と書いてあるようです。
action属性を含めない場合、ページはiframeクリックジャッキング攻撃にさらされます。これには、いくつかの簡単な手順が含まれます。
参考文献
これはHTML5で検証されます。
<form action="#">
action="."
か?
action="."
一般的なケースでは悪い考えです。のようなURL example.com/login
は、単ににマッピングされexample.com/
ます。
HTML 5ではaction=""
サポートされていないため、これは行わないでください。悪い習慣。
代わりに、アクションを完全に無効にして、デフォルトで同じページに送信する場合は、これがベストプラクティスであると思います。
<form>This will submit to the current page</form>
phpを使用してフォームを調停している場合は、次のことを検討してください。詳しくはこちらをご覧ください。
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
あるいは#
、これはアンカーのように機能し、ページの上部にスクロールすることを覚えておいてください。
<form action="#">
htmlspecialchars()
関数を使用すると、他のユーザーがPHPスクリプトを使用できなくなります。
私は通常、action = ""を使用します。これはXHTMLで有効であり、GETデータをURLに保持します。
action属性をまったく指定していません。それは私のフレームワークが実際に設計されている方法であり、すべてのページが正確に同じアドレスに送信されます。しかし、今日私は問題を発見しました。時々私はいくつかのバックグラウンドコールをするためにアクション属性値を借ります(私はそれらをAJAXと名付けていると思います)したがって、アクション属性が指定されていない場合、IEはアクション属性値を空のままにしておくことがわかりました。action属性が指定されていない場合、対応するJavaScriptは少なくとも未定義でなければならないので、私の理解では少し奇妙です。とにかく、私のポイントは、ベストプラクティスを選択する前に、JavaScriptで属性を使用するかどうかなど、より多くのコンテキストを理解する必要があることです。