我知道这是一个常见的要求,并且在野外有很多答案。如果有人能够在新窗口中提供一个仅从HTML文件打开外部链接的正确脚本,我将不胜感激。如何通过JavaScript在新浏览器窗口中仅打开外部链接?
0
A
回答
4
您可以使用jQuery这个:
$(document).ready(function(){
$("a[href^='http']:not([href*='"+location.hostname+"'])").attr("target","_blank");
});
它应与HTTP和HTTPS链接。
1
具体代码将决定您是否使用纯DOM脚本或任何Javascript框架。但一般来说,这是你要做的:
设置所有锚的onclick回调。
在您的回调中,检查链接的
href
属性是否转到外部站点。您可以使用多种方式来执行此操作,但最简单的方法可能是在URL上使用简单的正则表达式。如果不是外部的,则允许链接正常进行(即返回true等)。
如果是外部的,在新窗口中打开,然后返回false。
打开Javascript中一个新的窗口很简单:
window.open('http://www.google.com');
2
我在自己的网站上使用了一点JavaScript。然后,我有一个风格的设置修改链接(它增加了一个小图像/全球范围内,隐约MSDN等。制作的链接打开新页面也将通过修改目标属性是微不足道的。
if (document.links) {
for (var i = 0; i < document.links.length; i++) {
l = document.links[i].href;
if (l.indexOf('http://www.mysite.com')!=0 &&
l.indexOf('http://udv.mysite.com')!=0 &&
l.indexOf('http://')==0) {
c = document.links[i];
if (c.className == "dontModify") continue;
c.className = c.className + " external";
if (c.title != "") {
c.title = "External link: " + c.title;
}
}
}
}
你这是什么意思是由外部? – Gumbo 2009-05-30 20:28:57
对不完整的信息。我的意思是,如果我的网站是www.mysite.com,任何标记,其中有一些其他域然而mysite的href是外部对我来说 – theraneman 2009-05-30 20:30:40