繁体   English   中英

如何通过JavaScript在新的浏览器窗口中仅打开外部链接?

[英]How to open only external links in a new browser window via JavaScript?

我知道这是一个普遍的要求,并且有很多答案。 如果有人可以提供正确的脚本,该脚本仅在新窗口中打开HTML文件中的外部链接,我将不胜感激。

您可以为此使用jQuery:

$(document).ready(function(){  
    $("a[href^='http']:not([href*='"+location.hostname+"'])").attr("target","_blank");  
});  

它应同时匹配http和https链接。

我在自己的网站上使用了一些JavaScript。 然后,我有一个样式设置来修改链接(它有点像MSDN那样添加了一点图像/图像。使链接在新页面中打开也可以通过修改target属性来实现。

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;
            }
        }
    }
}

特定的代码将确定您是否使用纯DOM脚本或任何Javascript框架。 但通常,这是您要做的:

  1. 为所有锚设置一个onclick回调。

  2. 在您的回调中,检查链接的href属性是否转到外部站点。 您可以使用多种方法来执行此操作,但是最简单的方法可能是URL上的简单正则表达式。

  3. 如果不是外部的,则允许链接正常进行(即返回true等)。

  4. 如果是外部的,请在新窗口中打开,然后返回false。

用Javascript打开一个新窗口很容易:

window.open('http://www.google.com');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM