如何防止' <a> '标签中的地址添加前缀


Jquery : How to prevent prefix addition to address within an `<a>` Tag

我有一个HTML <a>标签如下:

<a id="ext_link" href="www.google.com">GOOGLE HOME</a>

和我使用JQUERY打开链接在一个新的窗口。JQUERY代码如下:

$(document).ready(function(){
    $("#ext_link").click(function(e){
        e.preventDefault();
        window.open($(this).attr("href"));
    });
});

当我使用<a id="ext_link" href="http"//www.google.com">GOOGLE HOME</a>它工作正常,但当我使用<a id="ext_link" href="www.google.com">GOOGLE HOME</a>一个新的窗口打开,地址栏包含http://localhost/app/www.google.com这是错误的地址明显…

如何防止开头自动添加http://localhost/app/

您可以使用正则表达式来测试您的href是否以http://https://开头,如果不是,则添加http://:

$(document).ready(function(){
    $("#ext_link").click(function(e){
        e.preventDefault();
        var url = $(this).attr("href");
        if(!/^(http|https):'/'//.test(url)){
            url = "http://" + url;
        }
        window.open(url);
    });
});

检查href是否不包含http://,并添加如下:

$(document).ready(function(){
    $("#ext_link").click(function(e){
        e.preventDefault();
        var url = $(this).attr("href");
        if(!/^https?:'/'//.test(url)){
            url = "http://" + url;
        }
        window.open(url);
    });
});

您可以添加更多协议,但https?://应该足够了。或者您可以使用//,因为许多现代浏览器都使用它并获得适当的协议。