2014-02-25 93 views

回答

3

還有,我能想到的一些客戶端選項,其中沒有一個理想的:

  • 你可以將網址href替換爲運行您想要的任何代碼的javascript:網址,然後導航到正確的網址(location.href = "http://example.com")。這很討厭,因爲如果用戶沒有右鍵點擊 - >新選項卡或禁用JavaScript,它會中斷。

  • 您可以將事件偵聽器添加到<a>的單擊事件中。但是這不會在右鍵單擊 - >打開時觸發,或者用戶標籤並按下回車鍵。

  • 您可以在文檔本身上使用onunload事件處理程序,但這不會告訴您用戶將要去哪,並且在用戶打開新選項卡時不會工作。

如果你只是想跟蹤你的用戶在哪裏導航,那麼服務器端解決方案是唯一的萬無一失的方法。您將不得不將用戶發送到您自己的服務器,然後再發送HTTP 302代碼將瀏覽器重定向到正確的URL。當然,這需要比您想要的更多的基礎設施。

+0

謝謝。我會盡力描述我的任務。我有一個頁面,包含我在服務器上生成的多個鏈接。用戶希望在新標籤上打開一些鏈接(這很重要 - 他不想鬆散當前頁面狀態)。用戶打開的鏈接必須隱藏。如果我理解正確,我不能使用第一個和第二個選項,因爲它不適用於「新選項卡」。而且我不能使用第三個選項,因爲用戶在新選項卡中打開鏈接並保持當前頁面打開。可能有其他方法來解決我的任務?嗯......可能是我可以使用CSS並隱藏所有訪問過的鏈接在我的頁面上...... – demas

+1

是的,你可以做'a:visited {display:none; }'。這將持續多個會議,你可能會或可能不需要。另外,我不確定瀏覽器的隱私模式會如何影響它,因爲檢查':visited'是發現用戶歷史的一種(稍微尷尬的)方法。 – Nevett

0

是的,你可以使用JavaScript做這樣的事情......

$('a').click(function(){ 
    event.preventDefault(); 
    $(this).alert("do something"); 
}); 
+0

它適用於右鍵單擊並打開上下文菜單鏈接嗎? – demas

+0

謝謝你的評價......誰曾經是誰。你可以改變,我相信這將工作右鍵點擊。 – Brent

+0

@jibsales,jQuery不是問題。 – demas

0

嘗試

var links = document.getElementsByTagName('a'); 
for(var i = 0; i< links.length; i++) { 
    links[i].onmousedown = function(e) { 
    console.log(this.href, this) 
    if ((e.which && e.which == 3) || (e.button && e.button == 2)) { // not sure about IE 
     alert('right click'); 
    } 
    } 
} 
+0

我懷疑它會提醒我是否會右鍵單擊該鏈接,但不會在新頁面或選項卡中將其打開。這樣對嗎 ? – demas

+0

@demas,是的,但它會阻止打開默認的上下文菜單,您可以創建自定義上下文菜單。 – ketan