我很好奇这应该如何正确完成。
我通过w3 html验证器运行了一个页面,我收到了一条错误消息
第47行,第54列:存在属性“target”,但不能用于此元素。**
<ul><li><a href="./jobops/1000 Design PM.pdf" target="blank">1000 Design PM</a></li>
您在文档中使用了上面提到的属性,但您使用的文档类型不支持该元素的该属性。此错误通常是由于“Strict”文档类型与使用框架的文档的错误使用(例如,您必须使用“Transitional”文档类型来获取“target”属性)或使用供应商专有扩展(例如“ marginheight“(这通常通过使用CSS来实现所需效果来修复)。
关于如何让链接打开新窗口但不使用目标标记的任何想法?
答案 0 :(得分:4)
您可以使用JavaScript to open new windows,这可以避免现代HTML中目标无效的问题。
然而,这绕过了人们用来警告他们关于新窗口(或防止它们打开)的各种系统,因此最好使用目标属性(并切换到允许它的Doctype)。
更好的方法是让用户决定何时需要新窗口。除了烦恼因素外,他们确实引入了accessibility problems。
答案 1 :(得分:3)
target="_blank"
不会验证strict,因为'target'属性已被弃用。
相反,尝试类似于前面提到的onclick解决方法,但你也不需要“_blank”。简单地:
<a href="./jobops/1000 Design PM.pdf" onclick="window.open(this.href); return false;">1000 Design PM</a>
会工作吗?弃用“目标”的原因是因为HTML用于语义标记数据,而目标属性提供行为,这就是javascript的用途。
如果用户关闭了javascript,则只会在同一窗口中打开该网址。
答案 2 :(得分:1)
不应该......
target="_blank"
无论如何......您可以使用javascript打开一个新窗口,但这打破了简单浏览的美妙之处。如果我使用Lynx或其他什么东西浏览怎么办?
答案 3 :(得分:1)
target
attribute不是HTML 4和XHTML 1.0以及XHTML 1.1的严格变体的一部分。
因此,您需要使用JavaScript来解决方法:
<a href="./jobops/1000 Design PM.pdf" class="_blank">1000 Design PM</a>
var aElems = document.getElementsByTagName("a");
for (var i=0, n=aElems.length; i<n; ++i) {
if (/(?:^|\s+)_blank(?:\s+|$)/.test(aElems[i].className)) {
aElems[i].onclick = function() {
return !window.open(this.href, "_blank");
}
}
}
或(将来)CSS 3(见Hyperlink Presentation Module):
a._blank {
target: new;
}
答案 4 :(得分:1)
根据W3C,似乎HTML 5中不再推荐使用“target”属性:
不再包含a和area元素的target属性 不推荐使用,因为它在Web应用程序中很有用,例如结合在一起 与iframe。
答案 5 :(得分:0)
答案 6 :(得分:0)
而不是target =“_ blank”(谁永远不会验证)你可以使用这样的javascript:
<a onclick='window.open("./jobops/1000 Design PM.pdf", "_blank");return false;' href="./jobops/1000 Design PM.pdf">1000 Design PM</a>
然后该链接将在新窗口中打开,您的页面将会验证。
未启用Javascript的用户(即使只占所有用户的2%)仍然可以使用此方法的链接。这家伙在评论中有一个很好的观点:)
祝大家周末愉快......