2010-08-28 100 views
2

在我的網站上,我有許多外部鏈接以及內部鏈接。 我想用javascript或w/e中的某種解決方案檢測外部鏈接並在新選項卡中打開它們,但會在同一選項卡中打開內部鏈接。 謝謝! =)如何在新標籤中打開外部鏈接

+0

您的網站鏈接是否有一些常見模式 – Hulk 2010-08-28 21:19:21

+0

是的,如果它們都包含「blogspot.com」,則其他所有內容都是外部的。 – MKv4 2010-08-28 21:30:07

回答

3
function getXterlinks() 
{ 
    var Xterlinks = document.getElementsByTagName('A'); 
    for (var i=0;i<Xterlinks.length;i++) 
    { 
     var eachLink = Xterlinks[i]; 
     var regexp_isYourdomain="your-domain.com"; 
     var regexp_ishttp=/(http(.)*:\/\/)/; 
     if((eachLink.href != null) && (eachLink.href.match(regexp_isYourdomain) == null) && eachLink.href.match(regexp_ishttp)!=null) 
     { 
      eachLink.target ="_blank"; 
     } 
    } 
} 

來源:http://www.mediawiki.org/wiki/Manual:Opening_external_links_in_a_new_window#How_to_make_external_links_open_in_a_new_window

+0

請注意,由瀏覽器決定是否應在新窗口或新選項卡中打開鏈接。你不能強制一個行爲或其他使用html或JavaScript的行爲。 – 2010-08-28 21:23:57

+0

@Jan - true,但使用'target =「_ blank」'是做這件事的標準方法。儘管如此,你的評論仍然存在。 – 2010-08-28 21:25:16

+0

工作!謝謝! :D – MKv4 2010-08-28 21:44:28

0

是啊,jQuery的仍然JavaScript的。如何:

$('a[href^="http://your-domain.com"]').attr("target", "_self"); 

$('a').not('a[href^="http://your-domain.com"]').attr("target", "_blank"); 

不知道第二,但你明白了。

0

我爲我的個人網站寫了這個解決方案。只要你喜歡jQuery(你應該,imho),你可以將它包含在一個普通的js文件中,然後忘掉它。它將與動態內容一起工作,並且如果您設置target =「_ blank」,則不會強制在當前選項卡中打開內部鏈接。

$(function() { 
    $('body').on('click', 'a', function() { 
     var currentHost = document.location.protocol+'//'+document.location.hostname; 
     if (this.href.indexOf(currentHost) != 0 && (this.href.indexOf('http') == 0 || this.href.indexOf('ftp') == 0)) { 
      window.open(this.href, '_blank'); 
      return false; 
     } 
    }); 
}); 

注:如果您使用jQuery < 7,使用.bind()來代替。對()

看到它在行動上http://www.seanknutson.com

相關問題