辅助功能 - 无法识别lang html标记

时间:2015-02-23 17:47:49

标签: accessibility

我们的网站一直在运行一些辅助功能检查器,它们似乎表明lang标签是空的。 最初我认为问题是由于语言被设置为en-US而引起的。所以我将其更改为en-UK 以下是header.php

上的代码
   <!DOCTYPE html /><!--[if lt IE 7]>
   <html class="no-js lt-ie9 lt-ie8 lt-ie7" <?php    language_attributes(); ?>><![endif]-->
   <!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" <?php language_attributes(); ?>>
   <![endif]-->
   <!--[if IE 8]><html class="no-js lt-ie9" <?php language_attributes(); ?>><![endif]-->
   <!--[if gt IE 8]><!--><html class="no-js" <?php language_attributes(); ?>><!--<![endif]-->

在wp-config.php上我设置了define('WPLANG', 'en-GB');。还下载了Wordpress的本地化版本。在wp-content中创建了一个languages子目录,并将en_GB.mo文件上传到其中。

当我在辅助功能检查器上运行时,我仍然收到错误,说lang标记为空

http://wave.webaim.org/report#/http%3A%2F%2Fwww.warwickshire.gov.uk%2F

任何人都可以指出我正确的方向来解决这个问题,因为它正在网站上运行的其他辅助功能审核中被标记出来。 非常感谢。

3 个答案:

答案 0 :(得分:2)

可能有两个原因,第一个原因是您错过了使用xml:lang属性,这也不是强制性的。也许,Wave确实关心它?

<html xml:lang="en_US" lang="en_US">

第二个是定义html标记的方式,这可能会导致Webaim解析器出现问题。

<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en-GB"><![endif]-->
<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en-GB"><![endif]-->
<!--[if IE 8]><html class="no-js lt-ie9" lang="en-GB"><![endif]-->
<!--[if gt IE 8]><!--><html class="no-js" lang="en-GB"><!--<![endif]-->

请注意,最后一行中的起始评论<!--><!-- -->不同。请参阅:http://www.w3.org/TR/html-markup/syntax.html#comments

我认为它更像某种解析错误(我不认为Wabaim​​ WAVE使用Webkit解析器)。

---编辑

为Chrome安装WAVE扩展程序后,我发现它不会返回与您网页语言有关的错误。

事实上,当您仔细查看其在线工具时,他们会加载代理版本的网页http://wave.webaim.org/data/getpage.php?reportkey=,其中html标记缺少此属性。因此,Wave解析器肯定存在问题。

因此,我建议您使用Chrome扩展程序,这将是预先测试您网站的更好解决方案,因为它不会修改您的代码。

答案 1 :(得分:1)

即使没有IE条件注释,您也可以解决此问题。我有/曾经(取决于你什么时候读到这个)一个只有这个开头的网站:

<!DOCTYPE html>
<html lang="en">
<head>
<!-- etc -->

它也会弹出错误。我发送了这个错误报告:

  

WAVE反馈于2015年10月11日上午10:54发送

     

网址:http://wave.webaim.org/report#/http%3A%2F%2Fwww.jeroenheijmans.nl

     

有问题的网址(www.jeroenheijmans.nl上我的索引页面的wave报告)报告了一个丢失的&#34; lang&#34;属性&#34; html&#34;元件。但是,该元素显然存在(如果您在单独的选项卡中单独打开该站点并查看源,您将看到此信息)。我在Windows 8.1上使用Chrome和Firefox最新版本。我还尝试过Chrome隐身模式。

     

如果我选择&#34; View Frame Source&#34;在我的WAVE工具页面上,我得到了一个没有&#34; lang&#34;属性。我可能遇到与https://stackoverflow.com/q/28692421/419956相同的问题,因为它提出问题与WAVE加载评估页面的方式有关。

并收到以下反馈:

  

这是一个已知的WAVE错误,将在一个版本中修复   不久的将来。

     

谢谢,

     杰瑞德史密斯   WebAIM.org

简而言之,你很好。您可以尝试the other answer by @Adam中建议的变通方法,或者只是安全地忽略错误。

答案 2 :(得分:0)

为了解决此问题,您已为工具修复了两个标记,以停止指向辅助功能错误。您必须同时设置“lang”和“xml:lang”标记。通过纯Javascript实现此目的的一种方法如下。我提出这个解决方案,因为它独立于任何平台。

(function() {
       document.getElementsByTagName('html')[0].setAttribute('lang', 'en-US');
       document.getElementsByTagName('html')[0].setAttribute('xml:lang','en-US');
})(); 

您可以使用您选择的语言替换“en”,以正确指出正确的语言

相关问题