jQuery-仅当锚href仅包含URL时返回true

时间:2018-11-21 05:25:57

标签: jquery html

我有一个jQuery函数,该函数针对页面上的每个锚定标记执行,需要检查acnhor标记应包含带有任何站点URL的herf属性。如果锚点标记不包含href标记或href标记,其值链接为空白,mailto,#,tel:1000等,则应返回false。

表示条件应检查锚标记应具有href标记,hreg标记应仅包含URL。

$('a').each(function() {   //add a class to all external links
    var $a  = jQuery(this);
    var domainURL = $a.get(0).href;
    var hostToDetectAsExternal = domainURL.replace('http://','').replace('https://','').replace('www.','').split(/[/?#]/)[0];

    if(domainURL != '' && domainURL.indexOf('javascript') == -1 && allwedHostsArray.indexOf(hostToDetectAsExternal) == -1) // -1 : Not found in a allowed hosts array & not found javacript in a URL
    {
        $a.addClass('external-link');
    }
});

已经编写了此代码,但未满足所有条件。请任何人帮我。

1 个答案:

答案 0 :(得分:1)

使用选择器字符串a[href^="http"]选择a属性以href开头的http(当然,这些属性也将包括以{{1 }})

https

如果您想包括所有个基于URL的$('a[href^="http"]').each(function() { ,而不仅仅是外部链接或绝对路径,则可以添加href,以匹配{{1 }}和相对网址:

a[href^="/"]