小编kib*_*ibe的帖子

“[aria-hidden="true"] 元素包含可聚焦的后代”;解决这个问题的最佳方法是什么?

我有一个简单的手风琴:

<div>
  <button aria-expanded='false' aria-controls='content'>
    Open accordion
  </button>
  <div id='content' aria-hidden='true'>
    This the accordion's hidden content.
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我使用 Javascript 打开/关闭手风琴并设置标签aria-*

一切正常,但是当我在内容中添加链接时:

<div>
  <button aria-expanded='false' aria-controls='content'>
    Open accordion
  </button>
  <div id='content' aria-hidden='true'>
    This is the accordion's hidden content.
    <a href='https://www.google.com'>Go to Google</a>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

灯塔给了我这个:

[aria-hidden="true"] elements contain focusable descendents
Run Code Online (Sandbox Code Playgroud)

在我看来,添加tabindex='-1'a标签可以解决这个问题:

[aria-hidden="true"] elements contain focusable descendents
Run Code Online (Sandbox Code Playgroud)

然而,这使得元素“不可选项卡”,这不利于可访问性。

我可以使用 JavaScript 手动查询手风琴内容中的所有a标签,但我什至不确定这是否真的解决了“问题”还是一个肮脏的解决方法?还有更好的选择吗?

html accessibility wcag wai-aria

7
推荐指数
1
解决办法
2万
查看次数

HTTP 响应的状态代码为何以及如何重要?

真正的问题;HTTP 状态代码如此之多,人们总是鼓励您在某种情况下使用正确的状态代码。

除了常见的(200404500)之外,我发送回用户的 HTTP 状态代码真的很重要吗?

浏览器对每个状态代码执行的操作是否不同?

http

3
推荐指数
1
解决办法
1243
查看次数

如何在 Scala 中组合 ADT?

我的应用程序有两层:域和应用程序。每层都有自己的“错误”ADT。例如:

package com.domain.person

sealed trait DomainError
case object NoPermission extends DomainError

final case class Person(hasPermission: Boolean): Either[DomainError, ???] {
  def doSomething() = {
    if (!hasPermission)
      Left(NoPermission)
    else
      ...
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序层(另一个包)中:

package com.application.person

sealed trait ApplicationError
case object PersonNotFound extends ApplicationError
case object UnexpectedFatalError extends ApplicationError

// and a function f :: Either ApplicationError Something
Run Code Online (Sandbox Code Playgroud)

问题是,由于DomainError生活在另一个包中,我不能简单地扩展我的ApplicationError特征:

package com.application.person

sealed trait ApplicationError
case object PersonNotFound extends ApplicationError
case object UnexpectedFatalError extends ApplicationError

// and a function f …
Run Code Online (Sandbox Code Playgroud)

scala scala-cats

3
推荐指数
1
解决办法
168
查看次数

控制器是在应用层还是基础设施层?我应该在 Clean Architecture 中使用控制器吗?

据我所知,Clean Architecture/DDD 声明您的用例可以由任何东西触发,让它是 HTTP 请求或 GUI,对吗?

我正在尝试模仿这一点,但我不确定我是否做得正确。

在我的infrastructure文件夹中,我有路由器。例如:

import express from 'express'
import UserController from '../controllers/user_controller.js'
import ExpressRouterAdapter from './ExpressRouterAdapter.js'

export default function UsersRouter () {
  const router = express.Router()

  router.route('/:username').get(ExpressRouterAdapter.adapt(UserController.getUser))

  return router
}
Run Code Online (Sandbox Code Playgroud)

ExpressRouterAdapter只是将 Express 请求转换为简单的 httpRequest JS 对象的适配器)

这是我的GetUser控制器:

import express from 'express'
import UserController from '../controllers/user_controller.js'
import ExpressRouterAdapter from './ExpressRouterAdapter.js'

export default function UsersRouter () {
  const router = express.Router()

  router.route('/:username').get(ExpressRouterAdapter.adapt(UserController.getUser))

  return router
}
Run Code Online (Sandbox Code Playgroud)

我有几个问题:

  1. 我什至应该有控制器吗?路由器是否应该将其直接指向用例/服务?
  2. ^^ 我之所以这么问是因为我的控制器确实以 HTTP 为中心。例如,其中一些被称为:PostUser …

domain-driven-design node.js express clean-architecture

1
推荐指数
1
解决办法
392
查看次数