我想要做的是記錄給定網頁上的所有用戶活動,所以我使用socket.io
發送在頁面上註冊的事件到服務器這樣的事情:注入自定義函數onclick事件
$(document).on('click.mynamespace', function(event){
var elem = event.target;
socket.emit('my-message', { 'element' : elem };
}
我現在面臨的問題是,當目標元素是這種<a href="#" onclick="someFunctionThatRedirects()">My link</a>
的鏈接。在socket.emit
語句正確執行之前,無論調用哪種函數並卸載頁面(斷開我的套接字)。
我想盡可能通用,因爲這將作爲一個插件,並希望它適應任何類型的環境,我將無法控制。
那麼,有沒有辦法「強行」所有點擊事件,首先用我的自定義函數發送它們,然後繼續「正常」執行,無論它是什麼?
編輯
看來只有FF(上14.0.1
測試)導致socket.emit
事件沒有結束。 Chrome 21.0.x
似乎正在工作,但不知道這是否是「偶然」。
EDIT 2
功能someFunctionThatRedirects
實際上以這種方式重定向window.location.ref = clickedurl
作爲一個側面說明,包裝和直接解包是多餘的。 'event.target'就是'elem'之後的東西。 – pimvdb
你可以推遲重定向到點擊事件後 –
哦,是的,抱歉,不知道爲什麼我寫了[0]的東西。 @pimvdb – scanales