2013-12-13 59 views
5

GitHub的佈局中使用這樣的構建體對的形式CSRF保護(可在主頁例如在註冊表格中可以看出):摺疊輸入類型

<div style="margin:0;padding:0;display:inline"> 
    <input type="hidden" value="somerandombase64" name="authenticity_token"> 
</div> 

什麼是摺疊<input type="hidden" ...>內聯的原因風格<div>? 是不是<div>多餘?

回答

2

如這裏解釋:LINK

Rails的形式標記助手幫忙,把與真實性令牌的隱藏字段。不幸的是,它將隱藏的字段包裹在div中!所以即使你的表單有style =「display:inline」,div也不會......並且你將無法顯示不強制換行的表單。

換句話說,防止換行的最安全的方法是將這些樣式margin:0;padding:0;display:inline添加到包裝div。

+0

'顯示:inline'追加元素在文件中的當前行。要將元素放置在**新行**中,有'display:block'。不是嗎?請澄清你的答案中的邏輯。 –

1

根據DTD for HTML 4需要[有效]。雖然form元素的後代無關緊要,但直接子元素必須是塊級元素。

運行此靠在W3C Validator Service爲進一步證明:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
</head> 
<body> 
    <form action="" method="get"> 
     <input type="hidden"> 
    </form> 
</body> 
</html> 

,而不是這樣的:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
</head> 
<body> 
    <form action="" method="get"> 
     <div> 
      <input type="hidden"> 
     </div> 
    </form> 
</body> 
</html>