是否可以使用javascript将target="_blank"
添加到网址中包含以下内容的所有链接:profile.php?id=
答案 0 :(得分:4)
以下内容应该有效:
var aElems = document.links;
for (var i=0,len = aElems.length; i<len; i++){
if (aElems[i].href.indexOf('profile.php?id=') != -1){
aElems[i].target = '_blank';
}
}
已修改以改善上述代码的效果,删除document.links
并将其替换为document.getElementsByTagName('a')
:
var aElems = document.getElementsByTagName('a');
for (var i=0,len = aElems.length; i<len; i++){
if (aElems[i].href.indexOf('profile.php?id=') != -1){
aElems[i].target = '_blank';
}
}
值得注意的是,使用Chris Fulstow querySelectorAll()
启用$('a[href*="profile.php?id="]')
方法的速度略快(在Chromium 14 / Ubuntu 11.04中):JS Perf speed-test。因此,以下是最快的(在支持querySelectorAll()
的浏览器中):
var aElems = document.querySelectorAll('a[href*="profile.php?id="]');
for (var i=0,len = aElems.length; i<len; i++){
if (aElems[i].href.indexOf('profile.php?id=') != -1){
aElems[i].target = '_blank';
}
}
JS Perf comparison支持“最快”的断言,至少在Chromium 14 / Ubuntu 11.04中。当然,请记住IE < 8, and Firefox 3,这种方法不会很好。
当然,上述内容应更正为:
var aElems = document.querySelectorAll('a[href*="profile.php?id="]');
for (var i=0,len = aElems.length; i<len; i++){
aElems[i].target = '_blank';
}
这是因为if
条件已由querySelectorAll()
评估,这使if
完全冗余。
修改了JS Perf comparison: http://jsperf.com/anchor-selector-test/3。
答案 1 :(得分:3)
另一个jQuery解决方案,只是为了好玩。
$("a[href*='profile.php?id=']").attr("target", "_blank");
答案 2 :(得分:1)