簡體   English   中英

為什么 Firefox 會從 HTML 表單中刪除/忽略隱藏的輸入值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM