w3c验证程序忽略jQuery之后的更改&;javascript更改

w3c验证程序忽略jQuery之后的更改&;javascript更改,javascript,jquery,html,w3c-validation,Javascript,Jquery,Html,W3c Validation,我有一个网站,需要通过W3C验证程序传递每个错误。我遇到的几个错误与图像的alt文本有关。我写了这个,并将它添加到 jQuery(文档).ready(函数($){ $('img')。每个(函数(){ var$img=$(本); var filename=$img.attr('src'); $img.attr('alt',filename.substr(filename.lastIndexOf(“/”+1)); }); }); 然而,我看到W3验证程序忽略了我对javascript所做的任何更

我有一个网站,需要通过W3C验证程序传递每个错误。我遇到的几个错误与图像的alt文本有关。我写了这个,并将它添加到


jQuery(文档).ready(函数($){
$('img')。每个(函数(){
var$img=$(本);
var filename=$img.attr('src');
$img.attr('alt',filename.substr(filename.lastIndexOf(“/”+1));
});
});
然而,我看到W3验证程序忽略了我对javascript所做的任何更改,并在javascript运行之前获取了HTML页面。类似的情况是,当我加载一个带有JS的映射时,W3验证器将其视为一个空元素


有没有办法让验证器在检查页面之前等待?

在编辑dom时,验证器不检查dom,只检查HTML。您需要自己为每张图片添加一个alt属性。

在编辑dom时,验证程序不检查dom,只检查HTML。您需要自己为每张图片添加一个alt属性。

验证HTML的目的是确保浏览器和其他工具(如web爬虫)可以正确读取它,并正确符合HTML规范。当代码运行时,这已经发生了,浏览器处理的任何无效内容都已经被处理,浏览器无法处理的任何无效内容都已经阻止了文档的正确解释。现在试图追溯HTML的有效性已经太晚了;已经读过了

换句话说:您的
img
标记仍然无效,您所做的只是修复浏览器创建的
img
元素


使这些
img
标记有效的唯一方法是将
alt
添加到HTML文件本身中,添加有用的内容,而不仅仅是源文件名。

验证HTML的目的是确保浏览器和其他工具(如网络爬虫)可以正确读取它并且正确地符合HTML规范。当代码运行时,这已经发生了,浏览器处理的任何无效内容都已经被处理,浏览器无法处理的任何无效内容都已经阻止了文档的正确解释。现在试图追溯HTML的有效性已经太晚了;已经读过了

换句话说:您的
img
标记仍然无效,您所做的只是修复浏览器创建的
img
元素


使这些
img
标记有效的唯一方法是将
alt
添加到HTML文件本身中,使用(as)有用的内容,而不仅仅是源文件名。

否,因为验证器用于验证HTML。你的HTML应该在任何时候都是有效的,当然是在任何javascript之前——这是因为那些能力较弱且禁用了javascript的人不会看到你的更改,所以这只是欺骗验证程序。JS与HTML是分开的。(另外:您已经试图通过自动生成值来欺骗alt标记,但这不是重点-alt标记是为了可访问性而存在的,并且允许禁用图像的人查看它们。
src
无论如何都会存在,所以这样做没有意义)不,因为验证器用于验证HTML。你的HTML应该在任何时候都是有效的,当然是在任何javascript之前——这是因为那些能力较弱且禁用了javascript的人不会看到你的更改,所以这只是欺骗验证程序。JS与HTML是分开的。(另外:您已经试图通过自动生成值来欺骗alt标记,但这不是重点-alt标记是为了便于访问,并允许禁用图像的人看到它们。
src
将在那里,因此这样做没有意义)此外,
alt
标记(使用时)实际上应该包含比文件名更多的信息,因为在
src
属性中已经有了这些信息。@somethinghere:绝对可以。换句话说:验证器看到的文档就是你在旧式视图源函数中看到的文档,不是检查器中的DOM树视图。验证器没有JavaScript解释器,因此不会评估文档中出现的任何脚本。服务器发送的任何标记都是验证程序获得的。此外,
alt
标记(使用时)实际上应该包含比文件名更多的信息,因为它已经在
src
属性中可用了。@somethinghere:绝对可以。换言之:验证器看到的文档是旧版视图源函数中看到的文档,而不是检查器中的DOM树视图。验证器没有JavaScript解释器,因此不会评估文档中出现的任何脚本。服务器发送的任何标记都是验证程序得到的。
<script type="text/javascript">
        jQuery(document).ready(function($) {

            $('img').each(function(){
                var $img = $(this);
                var filename = $img.attr('src');
                $img.attr('alt', filename.substr(filename.lastIndexOf("/") + 1));
            });

        });
</script>