html中map标签致使网站无法通过W3的XHTML验证
前一段时间我在网站的头部加上了av格子广告,这里的av是avatar的意思,AV格子广告制作很简单,使用的就是map标签,具体的制作请看这里的最后一条,最近不知道怎么想的决定去w3做一下xhtml验证,结果发现一个问题:map标签基本不能通过w3的xhtml 1.1验证…

这个方法很简便只要使用一张图片就可以了,代码大致如下:
<img src=”image_url” usemap=”#mapname” />
<map id=”mapname” name=”mapname”>….
然而让人觉得不可思议的是,竟然无法通过w3的xhtml 1.1的验证,其中无法通过给出的错误提示是这样的:
- “character “#” is not allowed in the value of attribute “usemap””
- “Attribute “name” exists, but can not be used for this element”
关于错误:
第二条的意思是说不能在<map></map>标签中使用name属性,就是说只能在map中用id了,对于IE、Opera来说不管是id还是name都无所谓,可能没有什么影响,因为他们可以认识id,但是对于Firefox、Google Chrome和Safari来说它们只认识name;这是w3的错还是Firefox、Chrome或Safari的错?
第一条的意思是说在不能对usemap使用“#”就是id,也就是只能在map标签中使用name属性,这是不是就是传说中的自相矛盾呢?这样一来,只有Google Chrome和Safari能够正常工作,IE、Firefox和Opera全都挂了,IE就不说了,Firefox、Opera可是都声称是按照标准来的,难道是w3错了?
如果你在usemap中使用了“#”也就是你用了id,那么对应还会有一个warning警告:
reference to non-existent ID “#map中的_id_名称”
最后,对于“map无法通过w3的xhtml 1.1验证”这个问题,如果谁有更好的办法请一定要分享一下,欢迎指正!
其实不明白,通过不了那个验证会有什么影响呢?
Super post, Need to mark it on Digg
@夏影残雪
是没什么关系,就是想看看为什么过不了的
我去试试我的~
就AV格子来说,CSS样式要怎么写?
我的是通不过的了,也不太在意。
不知为什么它整是提示——”——这个有错!
看这个篇文章,W3C官方的帮助文件:
http://www.w3.org/MarkUp/2009/xhtml11-issues-20090525.html#ssec20
总得意思还是xhtml产生了这个问题,他们验证原本应该通过,好像因为他们调整了usemap的url属性还是什么,结果就验证不通过了。
我把html的声明文件修改成XHTML 1.0 Transitional就可以通过了,strict有点bt了!
目前也没有什么好的办法来解决,可能xhtml2.0解决吧~