亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

由于每個頁面上都有表單標簽,Web 應用程序項目無法訪問

由于每個頁面上都有表單標簽,Web 應用程序項目無法訪問

C#
繁華開滿天機 2023-09-24 16:02:09
我有一個遺留的 Web 應用程序項目 (WAP),我需要確保它可以訪問。這種類型的項目有一個母版頁 (Site.Master),每個頁面(稱為 Web 表單)都繼承自該頁面以保持一致的外觀。一個新的母版頁如下所示:<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="First5Edmx.Site" %><!DOCTYPE html><html><head runat="server">    <title></title>    <asp:ContentPlaceHolder ID="head" runat="server">    </asp:ContentPlaceHolder></head><body>    <form id="form1" runat="server">    <div>        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">                </asp:ContentPlaceHolder>    </div>    </form></body></html>您將看到正文包含一個表單標記,這意味著使用 Site.Master 作為模板的每個頁面都會有一個表單,無論它實際上是否是表單。如果刪除表單標簽,項目將無法編譯。當我在網站上運行 Web 可訪問性時,每個頁面上都會收到錯誤“該頁面包含表單,但沒有提交按鈕”。當然,這是正確的,但是如何使該代碼易于訪問(無需使用更現代的技術重新創建整個項目)?
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻1951條經驗 獲得超3個贊

無論您是否可以使警告消失,請記住驗證器和檢查器的作用只是為了引起您對潛在問題的注意,但并非每條消息都不一定是真正的問題。對于可訪問性檢查器尤其如此。他們在全球范圍內做出了良好的假設,但有時無法區分錯誤和有點奇怪但出于某種原因需要的東西。

使用此類工具最重要的是,如果您收到無法/不想修復的警告,請準確了解其含義。如果您可以接受其中的含義,那么您也可以接受警告。要確切地知道它意味著什么,最好的當然是進行手動測試。可訪問性工具永遠無法取代手動測試。

回到您的具體情況,當然該工具在技術上是正確的:表單必須有一個提交按鈕。但實際上,如果表單既沒有任何字段也沒有任何按鈕,則無法發送任何內容。因此,對于您和用戶(如果有的話)來說,只會產生很少的煩惱。

不過,您仍然可以在沒有實際形式的頁面中嘗試兩件事:

  • 按照其他答案中的建議將 添加role="presentation"到 the 中<form>,以便屏幕閱讀器在沒有任何內容可填寫時不會向用戶宣布表單

  • display:none如果您真的想讓可訪問性檢查器滿意,請添加一個虛擬提交按鈕,禁用并隱藏,以便沒有人可以看到或單擊它。請注意,這可能會給使用自定義或禁用 CSS 的用戶帶來麻煩。當然,當已經有一個真正的提交按鈕時,就不應該有任何額外的提交按鈕。

思考第二項:你更喜歡什么?工具中的警告,或者一個可能會給 1000000 名用戶中的 1 名用戶帶來麻煩的小黑客解決方案,如果您錯誤地留下了正常按鈕和虛擬按鈕,可能還會出現一些有問題的頁面?既然您知道可能會產生什么后果,我個人認為,僅僅為了說您已經做到了而清除警告是不值得的,而是按照您的感覺去做。

不使用屏幕閱讀器時,role=presentation 沒有副作用,因此您對此完全安全。


查看完整回答
反對 回復 2023-09-24
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

我不確定這是否仍會被編譯器標記,或者任何引發錯誤的原因,但您可以使用 display:none 隱藏元素。這也會將其隱藏在輔助技術之外,因此,如果有工具將其標記為問題,則隱藏它可能會阻止其被標記。


您還可以嘗試 role="presentation" ,它基本上告訴輔助技術該元素僅用于視覺目的且不包含任何信息。這有點麻煩,但值得一試。


<form style="display:none" id="form1" runat="server">

    <div>

        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">


        </asp:ContentPlaceHolder>

    </div>

    </form>


查看完整回答
反對 回復 2023-09-24
  • 2 回答
  • 0 關注
  • 165 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號