由于每个页面上都有表单标签,因此无法访问Web应用程序项目

劳拉·托马斯(Laura Thomas)

我有一个旧的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>

您将看到该正文包含一个form标记,这意味着使用Site.Master作为模板的每个页面上都会有一个表单,无论它实际上是否是表单。如果删除表单标签,则项目将无法编译。

当我在我的网站上运行Web可访问性时,每个页面上都会出现错误“页面包含表单,但没有提交按钮”。当然,这是正确的,但是如何使此代码可访问(无需使用更现代的技术重新创建整个项目)?

昆汀

不管您是否可以使警告消失,请记住验证器和检查器只是用来吸引您注意潜在问题,但并非每条消息都不一定是真正的问题。辅助功能检查器尤其如此。他们在全球范围内都做出了很好的假设,但有时不知道在错误和某些奇怪的事情之间,但出于任何原因都希望得到它们。

此类工具最重要的是,如果警告您您无法/不想修复它,则必须确切知道其含义。如果您可以忍受暗示,那么您可以忍受警告。要确切了解其含义,最好的方法就是进行手动测试。可访问性工具永远无法取代手动测试

回到您的特殊情况,该工具在技术上当然是正确的:表单必须具有“提交”按钮。但是,实际上,如果表单既没有任何字段也没有任何按钮,则无法发送任何内容。因此,对您和用户(如果有)的困扰将非常小。

不过,您仍然可以在页面中尝试两种没有真实形式的操作:

  • 添加role="presentation"<form>在其他答案建议,使屏幕阅读器不会宣布一个形式提供给用户时,有什么可补
  • 添加一个虚拟的提交按钮,该按钮禁用并隐藏display:none,如果您真的想使可访问性检查器满意,则任何人都无法看到或单击它。请注意,这可能会对使用自定义或禁用CSS的用户造成麻烦。当然,当已经有一个真正的按钮时,不应有任何其他的提交按钮。

考虑第二个问题:您更喜欢什么?您的工具中是否有警告,或者有些小小的解决方案可能给1000000个用户中的1个用户带来麻烦,如果您由于误操作而留下了正常按钮和虚拟按钮,则可能会导致一些错误页面?既然您知道后果可能是什么,个人而言,我认为不应该仅仅为了说您已经做了,而是按照自己的感觉去做,以消除警告。

不使用屏幕阅读器时,role = presentation没有任何副作用,因此您完全可以放心使用它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Microsoft-Teams:由于“无法访问此应用程序”错误,因此无法测试个人标签

由于已关闭,因此无法访问ASP.NET MVC应用程序中的Response.OutputStream

基于Web的应用程序无法访问哪些硬件?

Azure Web应用程序无法访问Azure DB

“由于缺少入口点,无法访问场景...”-每个VC都有一个Storyboard ID-Xcode 7.3.1

由于有关堆栈映射框架的错误,因此无法运行我的JavaFX应用程序

由于在React SPA中存在Hasbangs,因此无法访问“刷新”页面

IIS HTTP错误500:由于相关的配置数据无效,因此无法访问请求的页面

多个表单,页面上的每个表单都有特定的 Flask Flash 消息

上传表单 plotly-dash 应用程序时无法访问数据框

无法访问我的 Spring Boot 应用程序页面

由于“内部”保护级别为swift 4,因此无法访问扩展初始化程序

将 Web API 上传到 Azure 使 Blazor Web 应用程序无法访问

由于出现“初始化前无法访问'__wbindgen_throw'错误”,因此无法使用Web程序集rust impl

如何实现可在应用程序所有页面上访问的高山组件?

在php页面上反应应用程序;React没有访问Session的权限

具有SQL Server应用程序角色的C#:由于会话处于终止状态,因此无法继续执行

无法访问运行 kubernetes 和 minikube 的网络上的 web 应用程序

无法访问Grails 3中的Web应用程序文件夹文件

添加MS身份后无法访问我的MVC 5 Web应用程序

Heroku上的Java Web应用程序:无法访问jarfile

Node.js Azure Web应用程序无法访问我的路线

在PHP Web应用程序中无法访问Docker环境变量

2 Teamcity Web应用程序无法访问git存储库

无法访问部署到Azure Service Fabric的Web应用程序

部署在github.pages上的Flutter Web应用程序无法访问某些资产

Angular 7 应用程序一旦发布就无法访问 Web API

无法访问部署到ubuntu的.Net Core 2.1 Web应用程序

无法访问 web 动态项目中的 angular js 页面