2013-11-25 65 views
0

我打算使用jQuery在新窗口中自動打開所有外部鏈接,但遇到了一些麻煩。下面是我使用的是什麼:如何在自動定位外部鏈接以在新窗口中打開時排除某些鏈接

<script> 
$('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'); 
    }); 
} 
}); 
</script> 

我有麻煩的是,內幾個頁面,存在使用打印,不幸的是上述的定位是包括打印功能的「打印此頁」鏈接 - 在新窗口中打開它,並在其中缺少頁面內容,導致空白打印窗口。有沒有簡單的方法讓我從jQuery目標中排除特定的ID或類,然後我可以添加到打印鏈接來避免這種衝突?或者我應該調整jQuery目標在鏈接的開始處尋找http://www.domainname.com以避免將其他任何內容視爲外部鏈接?

+1

http://api.jquery.com/not -selector/ – TCHdvlp

+0

你爲什麼不在鏈接上使用'target =「_ blank」'? – putvande

+0

追溯不得不改變大量的鏈接是不實際的。此外,客戶端要求它是一個自動的事情,即在沒有他們的許多管理員必須向鏈接添加任何內容的情況下,他們的域之外的任何內容都可以在新窗口中打開。 A可能看起來微不足道,但由於分佈式編輯責任,自動肯定是一個優點。 –

回答

0

添加一個類的noExt'給那些你不想去外部然後包外部功能就像if語句:

if(!$(this).hasClass('noExt'){ 
    ... do external stuff . . . 
} 
相關問題