首页 文章

为什么http://validator.w3.org在jQuery之前评估页面? alt标签?

提问于
浏览
-2

我有一个页面,通过jQuery()动态生成图像幻灯片 . 这些图片由最终用户上传为WordPress帖子 . 他们中的大多数都是懒惰的,并没有包含任何ALT标签 .

我针对w3c验证器运行页面并且自然地,它抱怨每个图像都需要ALT标记 .

所以我写了一个小jQuery()来为任何没有的图像动态添加一个通用的ALT标签 .

jQuery('img').each( function(i) 
  { 
  var v = jQuery(this).attr('alt');
    if( typeof(v) == 'undefined' )
      jQuery(this).attr('alt','generic alt tag');
} );

虽然它出现在源代码上,但验证器 - 仍然抱怨图像没有ALT标记 . w3c验证器在加载后会以某种方式“看到”页面,但是 - 在jQuery触发之前?或者我错过了其他完全明显的东西?

有没有办法让我的代码解雇 - 在验证器之前?最后,它在现实世界中有什么不同吗? IOW:有没有其他服务(搜索引擎,屏幕阅读器)可能会失败这种技术?

3 回答

  • 5

    标记验证服务验证标记 .

    它不生成DOM,执行JavaScript然后验证修改后的DOM .

    您必须在服务器上运行JavaScript才能在验证器中查看效果 .

    是否有其他服务(搜索引擎,屏幕阅读器)可能会失败?

    屏幕阅读器通常会处理生成的DOM,但我怀疑你会发现屏幕阅读器用户的比例高于非屏幕阅读器用户会在浏览器中禁用JS .

    搜索引擎通常根本不会执行JS .

  • 0

    “虽然它出现在源头”

    不,它没有 . 您正在查看DOM的当前状态,如果您改为查看页面的实际来源,您将看到它没有添加的属性 .

    “w3c验证器是否以某种方式'看到'页面在加载之后但是 - 之前 - jQuery会被激活?”

    jQuery根本不会触发 . 验证器加载页面并检查HTML代码 . 没有执行Javascript,甚至没有创建Jasvascript可以改变的DOM .

    验证器看到页面就像搜索引擎机器人一样,它们只加载页面本身并检查它 . 它们不执行任何Javascript,因此对于SEO目的,使用Javascript添加 alt 属性没有意义 .

  • 2

    对我来说听起来很合理;验证器读取并检查您的Html,而不是JS . 假设验证器遵循标准和普通Html页面的一组规则,这是有道理的 . 从这个角度来看,JS是一个扩展 .

    另外,想象如果禁用JS的用户访问您的页面会发生什么 - 它将如何工作和外观?

    如果你仍然想要验证生成的Html,这是一个处理JS的浏览器,那么我想你可以创建一个虚假的页面副本,并修改它以使它具有相同的结果,只有在简单的Html中(即删除完全依赖于JS仅用于测试目的) .

    另一方面 - 这究竟是什么意思?我不确定验证页面只是为了验证它是否适用于任何目的 . 如果您可以在大多数主浏览器中验证页面看起来很好,并且它也适用于小屏幕,那么您已经完成了比简单的W3C验证更有意义的事情 .

相关问题