[英]Why is Firefox removing / ignoring hidden input values from an HTML form?
我有一個 HTML 表單,它使用隱藏的輸入來管理 PHP 處理腳本中的行為。
在瀏覽器測試中,我發現該表單在 Chrome 和 IE 中運行良好,但在 Firefox 中存在問題。
Firefox 瀏覽器(使用 39.0)刪除隱藏的輸入值。 它們只是完全消失了,只剩下value=""
。 這反過來又弄亂了我的 PHP。
我已經廣泛搜索了有關此問題的信息,但一無所獲。
為什么 Firefox 會刪除(或忽略)我的 HTML 表單中隱藏的輸入值?
在原始文件中
在 Chrome 開發者工具中
在 Firefox 檢查器中
更新(基於發表的評論)
瀏覽器測試。 該表單已在所有主要瀏覽器(包括桌面版和移動版)上進行了測試。 該表單可在所有瀏覽器(包括 Firefox 移動版)上完美運行,但無法在 Firefox 桌面版 (39.0) 中完全運行,因為隱藏的輸入值已被刪除。
更新 2
重新啟動並重新安裝 Firefox 未能解決問題。
更新 3
已刪除所有客戶端腳本並檢查 HTML 驗證(無錯誤)。 問題仍然存在。
更新 4
這似乎是與 Firefox 緩存數據和處理 POST 請求的方式有關的問題。
當我“清除所有歷史記錄”(包括 cookie、緩存等)時,表單按預期工作......一次。
在所有后續提交中, value
屬性都有一個空值,並且沒有數據傳遞給 PHP,直到我再次“清除所有歷史記錄”。
這在其他瀏覽器中不會發生。
我有完全相同的問題。 沒有使用客戶端腳本。 我將隱藏字段嵌套在一個 div 中,然后一切正常。
這有效:
<div>
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
</div>
這復制了帖子中描述的確切行為:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
上述任一變體都適用於 Chrome。 問題僅出現在桌面版 Firefox 63.0.1(64 位)上。
更新 (2018-11-15) 實際上就我而言,問題是 HTML 格式錯誤(name 屬性前沒有空格)。 似乎 Chrome 可以容忍這一點,而 Firefox 則不那么容忍。 Firefox 提交一次該值,然后除非清除緩存,否則不會再次提交。 更正 HTML 更正了 Firefox 遇到的這種古怪行為。 更正的 HTML:
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>" name="_token">
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.