我有以下HTML单击时创建一个新窗口:
<a href="/path/to/site" target="_blank">glide by the people</a>
Run Code Online (Sandbox Code Playgroud)
问题是它没有通过W3C验证器.如何创建上述确认的链接?
使用此doctype:
<!DOCTYPE html PUBLIC "-//w3c//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhmtl1/DTD/xhmtl1-transitional.dtd">
Run Code Online (Sandbox Code Playgroud)
1.0过渡性适用于一些html"遗留"代码,包括target ="_ blank".
假设严格的XHTML,您可以将onclick事件绑定到相关的锚点.就像是:
<a href="/path/to/my/link" onclick="window.open('/path/to/my/link');return false;">My link</a>
Run Code Online (Sandbox Code Playgroud)
人们还会争辩说,由于逐步增强和将标记与标记分离,你应该将onclick动作与外部JavaScript分开绑定,但这是解决它的基本方法.
我想你问的是错误的问题.无论您是使用JavaScript插入目标属性还是将其置于服务器响应中,目标属性在严格的XHTML 1.0中都无效.
如果你真的想要那个属性,你必须使用不同的doctype,但这也不是正确的答案.
你应该问问自己为什么要这个属性.我猜你正试图创建一个新的标签或窗口.毋庸置疑,这通常被认为是糟糕的设计(它需要远离用户控制),但如果你真的想要这样做,你可以用JavaScript来做.
这是如何做:
保留你的链接,但添加一个特殊的类,例如"弹出"给他们.然后添加一行JavaScript(最好使用像jQuery或Prototype这样的框架来简化它),它接受该类的所有链接,并为它们提供一个点击处理程序,导致创建一个新的选项卡/窗口并取消默认值动作(即阻止链接作为链接工作).尽管如此,这仍然会惹恼人们,因为它会超越预期的行为.
你不应该做的是用虚链接替换链接,并依靠JavaScript来使链接工作.
无视那个.该target属性不再在HTML中被弃用(生活标准或"5",取决于您是否遵循WHW WG或W3C).今天正确的答案是用这个替换你的DOCTYPE:
<!doctype html>
Run Code Online (Sandbox Code Playgroud)
请注意,它不再必须是大写的,也不一定看起来像完整的SGML DOCTYPE声明.它只是一个残留的人工制品,将文档标识为符合标准的HTML.