首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >打开在域之外的新选项卡中打开的所有外部链接

打开在域之外的新选项卡中打开的所有外部链接
EN

Stack Overflow用户
提问于 2012-08-22 18:35:39
回答 9查看 14.6K关注 0票数 13

我正在尝试在新窗口中打开网站上的所有外部链接。然而,该网站有两个版本,例如商店和主网站。例如,在主站点上,我们可能有指向http://store.example.com的链接。

我这里有一些代码,可以让我在一个新窗口中打开所有的外部链接。但是,我希望能够排除某些域。就像我上面提到的那个。

代码如下:

代码语言:javascript
复制
$(document).ready(function() {
   $("a[href^=http]").each(function(){
      if(this.href.indexOf(location.hostname) == -1) {
         $(this).attr({
            target: "_blank",
            title: "Opens in a new window"
         });
      }
   })
});

我是JS / jQuery的新手,所以任何其他信息都会很有用。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-08-22 18:44:06

为了以编程方式触发点击,您可以执行以下操作:

代码语言:javascript
复制
$(document).ready(function() {

   $("a[href^=http]").each(function(){

      // NEW - excluded domains list
      var excludes = [
         'excludeddomain1.com',
         'excludeddomain2.com',
         'excluded.subdomain.com'
      ];
      for(i=0; i<excludes.length; i++) {
         if(this.href.indexOf(excludes[i]) != -1) {
            return true; // continue each() with next link
         }
      }

      if(this.href.indexOf(location.hostname) == -1) {

           // attach a do-nothing event handler to ensure we can 'trigger' a click on this link
           $(this).click(function() { return true; }); 

           $(this).attr({
               target: "_blank",
               title: "Opens in a new window"
           });

           $(this).click(); // trigger it
      }
   })
});
票数 18
EN

Stack Overflow用户

发布于 2019-05-14 03:23:02

如果你只是想要所有与你的域名不匹配的链接:

代码语言:javascript
复制
var all_links = document.querySelectorAll('a');
for (var i = 0; i < all_links.length; i++){
       var a = all_links[i];
       if(a.hostname != location.hostname) {
               a.rel = 'noopener';
               a.target = '_blank';
       }
}
票数 3
EN

Stack Overflow用户

发布于 2012-08-22 18:44:54

您是否能够编辑HTML以获得更好的钩子来处理单击事件?如果我需要分隔内部或外部之间的某些链接,我将在HTML元素上应用rel值。

代码语言:javascript
复制
    <a href="URL" rel="external">Link</a>

然后在你的javascript中

代码语言:javascript
复制
    $('a[rel="external"]').click( function(event) {
     event.stopPropagation();
     window.open( $(this).attr('href') );
     return false;
    });

编辑:既然你已经有了一大堆链接,不如这样吧..

代码语言:javascript
复制
    var a = new RegExp('http:\/\/store.blah.com');

    $('a').each(function() {

      if(a.test(this.href)) {
        $(this).click(function(event) {
         event.preventDefault();
         event.stopPropagation();
         window.open(this.href, '_blank');
        });
      }

    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12071254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档