2010-02-10 81 views
1

這是我的問題。我在CMS內部工作,用戶可以創建超鏈接(內部和外部)我想知道是否有一種好方法來檢查用戶點擊鏈接時是否導航到外部網站。如果他們使用後退/前進按鈕,在地址欄中輸入內容等,我不想做任何事情。我只是想將它們重定向到我們網站中的一個頁面,該頁面採用他們真正想要訪問的地址查詢字符串並顯示一條5秒(或左右)的消息,告訴他們他們將離開我們的網站,我們不對其中的內容負責等等。由於最終用戶將負責生成大部分鏈接,教他們實際上指向在中間頁面的鏈接是不太理想的,所以我想知道是否有一個簡單的解決方案使用JavaScript。重定向到轉到外部網站之前的中間頁面

回答

1

你可以使用jQuery附加一個單擊事件是外部網站上的所有鏈接(以http開頭,減去一些特殊情況下),那麼這既可以顯示一個模式對話框,或設置window.location到您的中間頁(你可以使用一個查詢字符串var作爲外部url)。您可以自定義選擇,以獲得外部鏈接,那麼附加的行爲:

$.expr[':'].external = function(obj){ 
    return !obj.href.match(/^mailto\:/) 
      && (obj.hostname != location.hostname); 
}; 

$('a:external').click(function() { 
    //show your dialog box or set window.location 
    //link in question will be $(this).attr('href') 
}); 
0

您應該在用戶保存數據時用自己的特殊鏈接(例如http://yoursite.com/redirect.ashx?http://external.com)替換用戶的鏈接,或者更好的方法是將用戶生成的內容提供給其他用戶。

+0

獲取它們生成這些鏈接的代碼不是一種選擇。我們正在使用第三方工具,無法對其進行修改。當我點擊一個外部超鏈接並在那裏處理它時,我真正想要的是一種方法。 – Ben 2010-02-10 21:31:40

1

我想我會類似於wsanville的答案的東西。除了我將添加一個點擊事件到所有錨點標記,然後檢查他們的href值是否在我們的域。

因此,像:

$('a').click(function() { 
    if this.href.indexOf('mydomain.com'!=-1) 
     return true; 
    else{ 
     window.location = "intermediate.html?href=" + this.href; 
    } 
}); 

任何人都知道什麼樣的表現打了一個頁面上的事件連接到每一個錨標記可以有?

相關問題