在基本目标语句中排除tel和mailto

时间:2018-01-19 14:48:36

标签: javascript jquery hyperlink

根据客户端请求,我们强制所有外部链接在新选项卡中打开。目前我正在使用js脚本。

但是,它也强制tel和mailto链接也打开新标签。我认为这就是为什么我在点击和发送电子邮件链接时在某些设备上收到错误的原因,弹出框中显示“此网站已被阻止自动编写电子邮件” - 这是在iPhone 6上专门发现的。

如何强制外部链接 - 但不包括邮件和电话链接?非常感谢任何帮助。

这是我目前使用的外部链接脚本。我想也许我可以做一个改动,只查找有“http”的外部链接,但是tel和mailto的else语句。但我不确定我该怎么做。

jQuery(document).ready(function($) {
    $('a').each(function() {
        var a = new RegExp('/' + window.location.host + '/');
        if(!a.test(this.href)) {
            $(this).click(function(event) {
                event.preventDefault();
                event.stopPropagation();
                window.open(this.href, '_blank');
            });
        }
    });
});

1 个答案:

答案 0 :(得分:1)

结合我的评论,我会选择针对每个锚点的href属性进行检查,并检查它是否不以mailto:tel:开头: (并且外部链接根本不起作用,我想这是由代码段环境引起的)



jQuery(document).ready(function($) {
    $('a').each(function() {
        var a = new RegExp('/' + window.location.host + '/');
        if(!a.test(this.href) && this.href.substr(0,4)!='tel:' && this.href.substr(0,7)!='mailto:') {
            $(this).attr('target', '_blank');
        }
    });
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="http://www.google.com">website</a>,
<a href="mailto:someone@somewhere.com">e-mail</a> and
<a href="tel:123456789">phone</a>.
&#13;
&#13;
&#13;

我必须承认,检查您可能要排除的所有协议并不理想,但它肯定比检查您想要在新窗口/标签中打开的所有内容更容易。

相关问题