2015-02-23 47 views
2

已经运行了一些可访问性检查器我们的网站,他们似乎表明lang标记为空。 最初我以为这个问题是由于语言设置为en-US造成的。所以,我把它改成en-UK 这里是header.php辅助功能 - lang html标记未被识别

<!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中创建了一个语言子目录并上传了en_GB.mo文件。

当我上的辅助检查我仍然得到一个错误说郎标签上运行,这是空

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

可能有人点我在正确的方向来解决这个问题,因为它是被标记了其他无障碍审计在网站上运行。 非常感谢。

+0

你应该首先运行HTML检查正确地指向正确的语言,我的报告说,在文档类型有一个额外的非法斜线 – 2015-02-23 18:00:27

+0

我想你的问题根本与WordPress无关。你的HTML是错误的。例如,<! - [if> IE 8]><! - '应该是<! - [if gt IE 8]>'。正如@MarkKaplun所说,检查你的HTML。投票结束这个问题,因为它不是WordPress的具体。 – cybmeta 2015-02-23 18:00:30

+0

谢谢!已经运行了HTML检查器。在<!DOCTYPE html />'上删除非法斜杠。将进一步研究HTML格式。使用HTML5 Boilerplate版本的Bootstrap。将检查没有遗漏。 – nivims 2015-02-24 12:21:43

回答

1

可能有两个原因,第一个原因是您错过了使用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解析器)。

---编辑

installating WAVE Chrome扩展程序后,我可以看到,它不会返回关于你的页面的语言错误。

事实上,当你仔细观察他们的在线工具时,他们会加载一个代理版本的网页,http://wave.webaim.org/data/getpage.php?reportkey=,而html标签缺乏这个属性。所以这对Wave解析器来说肯定是一个问题。

所以我建议你使用Chrome扩展,这将是一个更好的解决方案来预先测试你的网站,因为它不会修改你的标签。

+1

一直在寻找这个。根据以上所述,我们使用HTML5 Boilerplate,它遵循基于Paul Irish的条件IE格式 - 请参见最后一段 - http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ Lang标签是由WordPress的<?php language_attributes()动态生成的。 ?>'。只是为了确定我通过Wave运行了实际的Wordpress Codex url,并且它没有标记缺少的语言标记 - 但它们使用了lang =“en”。 听起来好像这里有一个错误,但我似乎无法缩小它还没有... – nivims 2015-02-24 14:08:56

+0

我在更多的研究后编辑了我的答案 – Adam 2015-02-24 14:59:13

+1

你在@Adam上的钱,它工作,我不能投票你的答案,因为我没有足够的声望,很高兴接受它作为一个解决了这个问题 – nivims 2015-02-25 10:47:35

1

即使没有IE条件注释,你也可以得到这个问题。我已经/有(取决于什么时候你可以阅读这个)一个网站,只是这个开始:

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

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

WAVE反馈在上午10:54,10月11日发出,2015年

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

有问题的URL(在我的索引页的报告浪潮www.jeroenheijmans。nl)在“html”元素上报告缺少“lang”属性。然而,该元素显然存在(如果您在单独的选项卡中单独打开该网站并查看源代码,您会看到这一点)。我在Windows 8.1上使用Chrome和Firefox最新版本获得了这一点。我也尝试了Chrome隐身模式。

看来,如果我在WAVE工具的页面上选择“查看框架源代码”,我会得到一个没有“lang”属性的源代码。我可能遇到与https://stackoverflow.com/q/28692421/419956相同的问题,其中提示问题出在WAVE加载评估页面的方式。

并取得了以下意见:

这是WAVE一个已知的bug将被固定在 不久的将来释放。

感谢,

贾里德·史密斯
WebAIM.org

总之,你的罚款。您可以尝试在the other answer by @Adam中建议的解决方法,或者只是安全地忽略错误。

0

为了解决这个问题,您已经为您的工具修复了两个标签,以停止指向可访问性错误。你必须同时设置“lang”和“xml:lang”标签。下面是通过纯Javascript实现这一点的一种方法。我提出这个解决方案,因为它独立于任何平台。

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

可以更换成“en”与您所选择的语言来代替