XHTML 1.0 Strict 之后就不支持 target 标签了。像如下形式的代码:
<a href="somewhere.html" target="_blank">link</a>
就通不过 W3C 的验证。
因此要使得在xhtml的页面中能实现target功能,在新窗口中打开链接,有以下方法:
1.用javascript实现,如通过以下代码:
<a href="http://www.example.com" onclick="window.open(this.href); return false">link</a>
找到了一个很好的进行此种处理的JS,详见:Unobtrusive Popup Windows
2. 自己扩展XHTML 1.1的DOCTYPE 。
比如我现在使用的这个DTD:
<!DOCTYPE html PUBLIC "-//BLOG.JIANQING.NET//DTD XHTML 1.1 Target //EN" "http://blog.jianqing.net/themes/theme2005/xhtml11-target.dtd">
就是扩展了标准的XHTML 1.1 ,xhtml11-target.dtd 文件是这样的:
%xhtml11.mod; %xhtml-target.mod;
这样就使得target 标签有效了。
3.还有一个扩展方式就是在标准的XHTML DOCTYPE后加一句:
<!ATTLIST a target CDATA #IMPLIED>
即使用如下的DOCTYPE声明:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/DTD/xhtml11.dtd" <!ATTLIST a target CDATA #IMPLIED>
这样也就可以使target标签有效了。不过在浏览器中会显示: ]> 这两个字符。要消除这个问题,必须使用正确的MIME来传送XHTML,XHTML的MIME类型应该设为application/xhtml+xml。只是修改Content-Type是没用的
具体可参看此文:Serving up XHTML with the correct MIME type
该文还提出了如何通过PHP来发送application/xhtml+xml的MIME类型的XHTML。
在dotClear也提供了这个功能。它能根据判断浏览器是否支持application/xhtml+xml的MIME类型自动选择是否发送application/xhtml+xml类型MIME。
updated 2005-4-15:
从w3cn.org上看到了一篇同样讨论这个问题的文章:target=”_blank”不符合标准?
updated 2005-5-15:
从 IBM 的 developerWorks 上看到了一篇关于 XHTML 2.0 的文章:Linking in XHTML 2.0。文章介绍了在 XHTML 2.0 中对于链接的规范。
文章的中文版本:XHTML 2.0 中的链接
受益匪浅!
右边内容众多,好不容易找到了你的feed 连接
发现了一个很特别的blog-DotClear
在看blog的时候,发现了填验证码的地方比较特别:How much makes eight times two (8*2=) ?这个就是DotClear。一个对xhtml标准支持的很好的blog。
谢谢你的建议,我有时间调整一下
http://www.w3cn.org/article/tips...
有空看看
CcChen,文中也有你推荐的这篇文章的链接哈。
第2个方法如何实现的?我总是无法通过,能再详细讲讲吗?
你看一下这里的一个例子:
golem.ph.utexas.edu/~dist…
thx,我研究研究
validator.w3.org/check?ur…
不晓得为什么这样……看来是 MIME 的问题
test comment!