您应该问自己的问题不是如何“规避”Strict 的限制,而是为什么要首先使用 XHTML Strict 1.0!
在你的情况下,我会简单地使用 Transitional 作为 DTD。当然,除非您正在开发特定的操作系统,例如不允许打开多个窗口,例如在汽车系统、物联网或更奇特的设备中。顺便说一句,这就是 HTML 严格中缺少 target 的原因。严格是故意限制。
但是,当您似乎是为了“正常”使用而开发时,您的文档类型应该反映这一点,并且您应该使用:
<!DOCTYPE html>
另请参阅为什么从 xhtml 中删除目标
我建议不要添加目标属性。由于可访问性原因,它被删除了,而且当page决定me我的浏览器标签如何打开时,我不喜欢它。当然,如果您愿意,您可以自由地这样做。我将向您展示 Darin 上面提到的 JavaScript 方法,该方法允许您验证 XHTML 1.0 Strict 或 XHTML 1.1:
HTML代码:
<!-- Added link titles for better testing purposes -->
<ul id="socialnetwork">
<li><a href="http://www.twitter.com/" class="targetblank">Twitter</a></li>
<li><a href="http://www.flickr.com/" class="targetblank">Flickr</a></li>
<li><a href="http://www.xing.com/" class="targetblank">XING</a></li>
<li><a href="http://www.rss.com/" class="targetblank">RSS</a></li>
</ul>
JavaScript 代码:
window.onload = function() {
// Code if document.getElementByClassName() doesn't exist
if (document.getElementsByClassName == undefined) {
document.getElementsByClassName = function(className) {
var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
var allElements = document.getElementsByTagName("*");
var results = [];
var element;
for (var i = 0; (element = allElements[i]) != null; i++) {
var elementClass = element.className;
if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
results.push(element);
}
return results;
}
}
var anchorList = document.getElementsByClassName('targetblank');
for (var i in anchorList) {
anchorList[i].target = '_blank';
}
}
当然,如果您已经在其他地方包含了 window.onload,则可以省略它,但我建议使用它(或使用其他加载函数,例如 JQuery 的
$(document).ready();
),以便在页面加载完成时加载 JavaScript。现在,您需要做的就是为每个锚链接指定一个“targetblank
”类,并且链接应该在新选项卡中打开。
对于这种情况,我使用一个简单的 jQuery 解决方案,使用 XHTML Strict 对其进行验证,并允许出现新窗口。
<a href="http://www.example.com" class="linkExternal">Example URL</a>
<script type="text/javascript">
$(function(){
$('a.linkExternal').on('click',function(e){
e.preventDefault();
window.open($(this).attr('href'));
});
});
虽然我不能说为什么这个属性被认为是无效的,但作为一种解决方法,如果您希望您的网站验证为 XHTML Strict,您可以使用 javascript 添加此属性。
在 XHTML STRICT 中使用目标的最佳方式是:
onclick="target='_blank';"
<a href="http://botje.tnhteam.com/" onclick="target='_blank';">Botje is overal</a>
如果您需要 _self 或任何其他目标,您可以将 _blank 更改为 _self 例如:
onclick="target='_self';"
我希望这个答案对你们中的一些人有帮助......
试试这个:
<a href="#" onclick="window.open('urlgoeshere');">Link</a>
我更喜欢这个
<a href="http://myurl.com" onclick="this.target='_blank'">Anchor text</a>