辅助功能 - lang html标记未被识别
已经运行了一些可访问性检查器我们的网站,他们似乎表明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
可能有人点我在正确的方向来解决这个问题,因为它是被标记了其他无障碍审计在网站上运行。 非常感谢。
可能有两个原因,第一个原因是您错过了使用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扩展,这将是一个更好的解决方案来预先测试你的网站,因为它不会修改你的标签。
一直在寻找这个。根据以上所述,我们使用HTML5 Boilerplate,它遵循基于Paul Irish的条件IE格式 - 请参见最后一段 - http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ Lang标签是由WordPress的'。只是为了确定我通过Wave运行了实际的Wordpress Codex url,并且它没有标记缺少的语言标记 - 但它们使用了lang =“en”。 听起来好像这里有一个错误,但我似乎无法缩小它还没有... – nivims 2015-02-24 14:08:56
我在更多的研究后编辑了我的答案 – Adam 2015-02-24 14:59:13
你在@Adam上的钱,它工作,我不能投票你的答案,因为我没有足够的声望,很高兴接受它作为一个解决了这个问题 – nivims 2015-02-25 10:47:35
即使没有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://*.com/q/28692421/419956
相同的问题,其中提示问题出在WAVE加载评估页面的方式。
并取得了以下意见:
这是WAVE一个已知的bug将被固定在 不久的将来释放。
感谢,
贾里德·史密斯
WebAIM.org
总之,你的罚款。您可以尝试在the other answer by @Adam中建议的解决方法,或者只是安全地忽略错误。
为了解决这个问题,您已经为您的工具修复了两个标签,以停止指向可访问性错误。你必须同时设置“lang”和“xml:lang”标签。下面是通过纯Javascript实现这一点的一种方法。我提出这个解决方案,因为它独立于任何平台。
(function() {
document.getElementsByTagName('html')[0].setAttribute('lang', 'en-US');
document.getElementsByTagName('html')[0].setAttribute('xml:lang','en-US');
})();
可以更换成“en”与您所选择的语言来代替
你应该首先运行HTML检查正确地指向正确的语言,我的报告说,在文档类型有一个额外的非法斜线 – 2015-02-23 18:00:27
我想你的问题根本与WordPress无关。你的HTML是错误的。例如, IE 8]><! - '应该是'。正如@MarkKaplun所说,检查你的HTML。投票结束这个问题,因为它不是WordPress的具体。 – cybmeta 2015-02-23 18:00:30
谢谢!已经运行了HTML检查器。在'上删除非法斜杠。将进一步研究HTML格式。使用HTML5 Boilerplate版本的Bootstrap。将检查没有遗漏。 – nivims 2015-02-24 12:21:43