2009-07-15 73 views
2

我需要的是能趕上事件的頁面上一個javascript每當我點擊的東西,該次點擊會導致重定向,在新窗口中打開,等捕獲所有瀏覽器事件可能重定向/打開新的瀏覽器

由於鏈接有時不會直接打開新窗口,因此它們會調用JavaScript函數(window.open,document.location.href)。是否有可能我可以抓住他們並編輯網址。

謝謝。

+0

你有沒有發現,捕捉一切都很好的解決方案,而不僅僅是點擊? – Domi 2014-05-27 15:06:45

+0

@Domi,不,但你可以做一個替代解決方案:像backbone.js一樣使用觀察者模式,併爲document.location.href,window.open等創建觀察者,並實現下面提出的解決方案。 – 2014-06-04 14:27:53

+0

你如何觀察變量?你的意思是使用`setInterval`進行髒檢查?我已經檢查並用`Object.defineProperty`覆蓋它是行不通的。 – Domi 2014-06-04 15:23:26

回答

0

您可以使用鏈接的click事件來實現此目的。如果你使用jQuery,它可以去是這樣的:

$("a").click(function() { 
    /* Open the site in a new window */ 
    var strNewURL = "http://example.com/redirect.php?id=" + this.href; 
    window.open(strNewURL, "myFancyNewWindow"); 

    /* Stop the browser following the original link */ 
    return false; 
}); 

這說明你怎麼能額外位添加到HREF的前通過自己的重定向腳本發送用戶那裏。

如果您只想對某些鏈接執行此操作,您可以優化選擇器,例如, $("#content a")。另外還有:https://developer.mozilla.org/En/DOM/Window.openhttp://docs.jquery.com/Events/click

0

您可以爲document.body指定一個onclick處理程序,並通過使用event.target來檢測哪個元素已被點擊,這基本上是做事件委託。

通過具有事件目標,您可以瞭解點擊的元素應有盡有,喜歡它的標籤名,和所有的元素attributtes:

document.body.onclick = function(event){ 
    if (event.target.tagName == 'A'){ //Handle anchors 
    var url = event.target.href; 
    // redirect, window.open, or whatever you want... 

    event.preventDefault(); 
    } 
}