新的广告交换、51.la统计和web标准
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/401)的形式标明文章原始出处和作者信息及本声明。标题又有点风牛马不相及,不过还是有那么一点点关联的,再说了,一篇文章的内容相对广泛,不仅有利于SEO,而且还会给胡乱转载者以困惑,同时还不会干扰正常转载、引用的朋友,嘿嘿。
首先说今天我第一次见到的网站广告交换–BlogUpp,感觉很新颖,很方便,就顺手也弄了一个,放在右边的广告下面,感觉特点如下:
- 不用注册,直接输入网址,就得到一段代码,扔网站页面上就行了。
- 交换广告是竖向排列的两个,固定的大小和布局,至少目前没得选择,不过适合blog这种右边大条空白的情况。
- 加载的时候,先显示文字,然后加载图片,当然文字和图片都是从每个网站上攫取出来的,中文支持良好。
- 正常显示广告的情况下,一般是显示图片,鼠标滑过的时候,切换为文字内容,既用图片吸引了眼球,又能让读者根据文字内容来了解是否真的需要打开浏览,应该说这一点我觉得是它设计最好的地方。
- 提供两种形式的代码,一种是
iframe另外一种是style+div,我鸡蛋里挑点骨头:第二种里面的target="_blank"这种用法是不符合w3c标准的。
之所以对w3c标准如此敏感,是因为下午刚刚为51.la统计代码无法通过w3c验证而头疼(验证的不是本blog的页面,选用dtd是XHTML 1.0 Strict)。先来看一下这段代码吧:
<script type="text/javascript" src="http://js.users.51.la/272422.js"></script>
<noscript><a href="http://www.51.la/?272422" target="_blank"><img alt="我要啦免费统计" src="http://img.users.51.la/272422.asp" style="border:none" /></a></noscript>
用w3c的validator一检查,错误就出来了,主要有两处,一处比较简单:
document type does not allow element "a" here; missing one of "p", "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", "ins", "del" start-tag .
就是说a不应该出现在这里,它属于inline元素,应该被包含在block元素中云云,img也是一样,解决方法是用p或者div元素来包含他们就可以了。
而第二个不兼容就比较棘手了:
there is no attribute "target" .
也就是`target=”_blank”这种用法是标准不允许的,这个问题着实难解决了点。
有朋友说了,你不会用js来实现么?的确,网上有解决方式是先赋予a链接rel=xxx属性,然后用js判断属性再脚本运行时添加`target=”_blank”属性,或者直接用js打开脚本的也算一种方法。
可是各位,你们没有发现,这个链接是在<noscript>标签中么?这个标签中的代码只有在浏览器不支持js的时候才会显示,试问,在不支持js的浏览器中,刚才的js解决方案还能用么?
最终,我也没有更合适的解决方案,只有把`target=”_blank”去掉,然后在旁边注上一行字:
<noscript>
<div>
<a href="http://www.51.la/?272422">
<img alt="我要啦免费统计"
src="http://img.users.51.la/272422.asp" style="border:none" />
Tips: 在新窗口中打开链接,浏览更方便(点鼠标右键)。
</a>
</div>
</noscript>
我想,目前也只能用这种方式解决了吧,好在不支持js的浏览器、又是人在用的(非机器人),应该不多。
其实,51.la代码的兼容性之所以被发现,之所以不得不改,也不是我吹毛求疵,而是用了eclipse之后,它的语法检查给发现的(够强大的),实在是不习惯看到一对error和warning在下面待着,“被迫”修改代码使它们更加“标准”,我想这也是eclipse的一个优点吧。
PS: 在BlogUpp缩图中我网站的首页太难看了,一个图片也没有,hmm…,有没有好一点的wordpress两栏布局模板,突出文章内容的?偶也换换?
Update @ 2008-05-12
看到妖精把BlogUpp的上下布局给横过来了,猜测是自己手工改的,官网上好像没这个功能啊。。。
Bookmark and Share This Page
If you like this then please subscribe to the RSS Feed.
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BuddyMarks
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
kirtsy
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
May 6th, 2008 at 19:02:30
谁说“target=”_blank””这种用法是不符合w3c标准的?
XHTML 1.0 Strict不允许target=”_blank”罢了。
改成XHTML 1.0 Transitional这个DTD,target=”_blank”就允许了。XHTML 1.0 Transitional一样也是W3C的标准。
你这鸡蛋里挑骨头完全挑得不是味道。就一个笼统的W3C标准。
如果以XHTML 1.0 strict为标准的话,target=”_blank”固然不合标准,但是iframe就合标准吗?XHTML 1.0 strict的DTD里根本没有iframe这个element!
如果以XHTML 1.0 Transitional为标准的话,BlogUpp的那段iframe还是不合标准,因为里面有个属性是frameborder=”no”,这个写法是错误的,以DTD为准,应该写成frameborder=”0″。(即使以HTML 4.01 Transitional为标准,也是不符合的。至于HTML 3.2以及更早的版本中压根没iframe这个element,更不可能符合了。)
你根本就对标准不敏感,所以还是建议你用XHTML 1.0 Transitional或HTML 4.01 Transitional,而不要用strict系的。
[Reply]
Fwolf reply on May 7th, 2008 1:04:04:
终于看到牛人发言了,不容易啊
首先感谢你指出我的错误
是的,我使用xhtml 1.0 strict,所以才会发现target无法通过验证
我认为web标准有点类似iso9000认证,通过了认证并不代表你就100%符合标准了,还要每年复审、持续改进的。
同样,我声明了xhtml 1.0 strict,并不是说我一开始就能完全符合标准,而是以它为目标让我的东西去尽可能的靠近它。
不是有那么句话么,原文忘记了,意思大概就是,你能爬多高,要看目标定得有多高了。正因为对我标准不是非常熟悉,才会时不时的去w3c验证一把,改改错误嘛,如果用transitional,岂不是连发现这个错误的机会都丧失了?
转回来,别说BlogUpp的iframe不合标准,它那段style的代码也存在和51.la同样的问题,或者再说大一点,几乎所有的统计代码、广告交换都通不过xhtml 1.0 strict。但话说回来,它们提供的代码都是代码片段,并没有声明doctype,所以用这些代码的人就需要多作点功了。
web标准的推广路还很长,希望你我都能尽一份微薄之力吧。
[Reply]
May 10th, 2008 at 11:36:28
哈哈… 有意思, 一会我也去弄弄看~
这篇文章, 包括评论, 真让我长见识啊~~
[Reply]