2012-01-19 135 views
5

我試圖跟蹤外部鏈接上的點擊(不使用「重定向頁面」)。跟蹤鏈接時發生的事件

我怎麼能當用戶打開一個鏈接時,無論用戶是否捕捉事件:

  1. 左點擊鏈接
  2. 右鍵點擊該鏈接,在新窗口中
  3. 打開
  4. 使用鍵盤激活鏈接
  5. 是否有其他方式來激活鏈接?

onClick事件只適用於第一個。

如果設置爲href="javascript:fireEventAndFollowLink()"用戶將無法在新窗口(2)中打開鏈接,因此這不是一種溶劑。

回答

9

鏈接可以在某些方面被觸發(假設現代的瀏覽器,見腳註):

  1. 左鍵點擊
    • 對於<a target="_blank"><a target="_new">,頁面將在新標籤加載
    • 當用戶按下CTRL時,頁面將加載到新標籤頁中。
    • 當用戶按SHIFT時,頁面將被載入新窗口
    • 對於其他target值,該鏈接可以加載在當前屏幕或的另一幀中。
  2. 對華門戶點擊
    • 該頁面將在新標籤加載,無論修改鍵。
  3. 右擊
    這種方法是天昏地暗,如果不是不可能完全實現
    JavaScript不能用於直接檢測上下文菜單中選擇了哪個選項。
    • 當選擇「在新建(標籤,窗口)中打開鏈接」時,頁面將加載到一個新標籤頁窗口中。
    • 當不選擇任何一種,沒有加載
  4. 鍵盤:
    • 文本菜單(見圖3)
    • 輸入 - 見1。

如何捕捉到這些鏈接
捕獲所有鏈路事件沒有可靠方式。

  • onmouseup事件可以被用於檢測1,2,和3
    所使用的按鈕可以通過event.button(or event.which)屬性進行跟蹤。在所有非IE瀏覽器中,0 =左,1 =中,2 =右。在IE中,1 =左,2 =中,4 =右。
  • onclick事件可用於捕獲1和2.
    修改鍵可通過event.altKeyevent.shiftKey屬性檢測到。
  • oncontextmenu事件可以被用於捕捉3
  • onkeydown事件可以被用於捕獲4.

修改鍵的行爲是不以任何規範制定的,因而瀏覽器的具體。至少Firefox(至少3個以上)和Chrome(全部?)實現這一關鍵行爲。

Related question - 如何攔截鏈接上的操作(<a>)?

+0

謝謝你的詳細解答。我猜想確保跟蹤外部鏈接點擊的唯一方法是實現某種「重定向頁面」(如Google和Facebook所做的那樣)。 –