你在这里

访问性能最佳实践

原文链接:https://drupal.org/node/1637990

这里的内容将提示你一些在开发Drupal 模块时需要注意的事项。

请使用工具评估你的模块页面的访问性能

使用Web Accessibility Evaluation Tool(WAVE)工具栏或者其他的自动化工具检查你的模块创建出的任何页面、块的访问性能。

这里还有更多访问性能测试工具。这些工具并不能检测到所有的访问性能方面的问题,但在这方面已经能建立良好的开端了。

正确地使用和论坛有关的API

如果使用了Drupal的论坛API,那它会在增强你论坛的访问性能方面做很多工作。在使用hook_form_alter以及其他的技术修改论坛时,请先确保他们不会降低论坛的访问性能。

使用#title 和 #description

每个表单API元素都应该设定#title属性值。这样输入框就会有一个标识,让在查看页面的用户能够知道这个区域是输入什么的。#title属性值必须能反映出表单元素的标识。它不能被用作格式化其他的文本(比如创建一个标题)。除了标题,如果表单元素还需要更多描述,也可以设定#description属性值。
举个例子:

<?php

$form
['pass'] = array(
 
'#type' => 'password',
 
'#description' => t('Passwords must be at least 8 characters and contain a number'),
 
'#title' => t('Password'),
 
'#maxlength' => 64,
 
'#size' => 15,
);
?>

利用输入框集合将逻辑上属同类的元素分组

如果你要创建一个日期或者电话号码的输入框,最好使用一个输入框,而不是好几个。但如果你需要创建很多个输入框(比如为了输入年月日),那么你应该将这些输入框组成一个输入框集合,这样查看页面的用户就能很清晰地知道它们在逻辑上是属于同一个输入框的。 举例如下:

 

<?php

$form
['start_date'] = array(
 
'#type' => 'fieldset',
 
'#title' => t('Date'),
);
$form['start_date']['month'] = array(
 
'#type' => 'textfield',
 
'#title' => t('Month'),
 
'#size' => 2,
 
'#maxlength' => 2,
);
$form['start_date']['day'] = array(
 
'#type' => 'textfield',
 
'#title' => t('Day'),
 
'#size' => 2,
 
'#maxlength' => 2,
);
$form['start_date']['year'] = array(
 
'#type' => 'textfield',
 
'#title' => t('Year'),
 
'#size' => 4,
 
'#maxlength' => 4,
);
?>

同理,包含在一个输入区域内的单选框和复选框也需要组成集合。

请看下面例子:

<?php
$form
['dinner_pref'] = array(
 
'#type' => 'fieldset',
 
'#title' => t('Dinner Preference'),
);
$form['dinner_pref']['month'] = array(
 
'#type' => 'radio',
 
'#title' => t('Chinese'),
);
$form['dinner_pref']['day'] = array(
 
'#type' => 'radio',
 
'#title' => t('Indian'),
);
$form['dinner_pref']['year'] = array(
 
'#type' => 'radio',
 
'#title' => t('Burgers'),
);
?>

有用的链接

下面几个链接里讨论了表单API的访问性能以及这方面的一些思索:

创建可访问的Javascript组件

Javascript 组件通常都不可访问。

自动填写的组件

在Drupal7中你可以通过设定表单元素的'#autocomplete_path'属性值来创建可以自动填写的组件。这些组件是可访问的。如果你想使用jQuery UI里的自动填写功能,而不是Drupal内建的版本,那1.9版的是可用的,1.8版本就不能用了。

日期/日历类型的弹出式组件

标记:大家都知道哪些好的日期/日历类型的弹出式组件吗?

其他可定制的Javascript组件

如果想寻求创建JavaScript组件方面的内容,可以去WebAIM上看看这些关于JavascriptAJAX访问性能的文章。


其他信息请见drupal.org上的访问性能手册


关于创建可访问的主题方面的信息,请见主题指导里的访问性能板块