2013-01-08 23 views
1

所以,目前我有一個腳本攔截在標籤上任意點擊鼠標,修改輸出鏈接,並在他們的方式向用戶發送:打開新選項卡自定義URL從中間點擊在Firefox

$("a[href*='" + someDomain + "']").bind('click keypress', function(event) { 
    event.preventDefault(); 
    var link = this.href; 
    var newLink = link + params; 
    var button = event.button; 
    if(button && button == 0)) { 
     window.location = newLink; 
    } else if(button && button === 1) { 
     window.open(newLink, '_blank'); 
    } 
}); 

此代碼將確定是左鍵單擊還是中鍵單擊,並重定向當前頁面,或者相應地在新窗口/選項卡中打開。

就我所見,代碼在Chrome/IE中運行良好。但是,在最新版本的Firefox中,只有左鍵點擊正在工作。

對於中間點擊,該事件未註冊。所以,我的第一個想法是研究其他事件必須被觸發。我能找到的唯一一個是mousedown/mouseup(點擊是這些的組合)。

使用mousedown或mouseup,然後在Firefox中正確註冊一箇中間點擊事件。然而,問題就變成Firefox將拒絕從JavaScript代碼中打開任何不是CLICK事件結果的新窗口。

那麼....任何線索,如果這實際上是可能的?我寧願不讓用戶不得不允許彈出窗口,或重新映射他們的中間點擊功能以在當前窗口中打開。

在此先感謝您的幫助!

+1

Firefox將不會觸發點擊事件錨元素「不破網絡」在中間擊,因爲「很多網站認爲‘onclick’事件僅觸發對於左鍵(因爲這是IE和NS4做的)。「請參閱https://bugzilla.mozilla.org/show_bug.cgi?id=156137 - 這是一個相當差的理由海事組織,因爲其他較新的瀏覽器確實解僱了它,並沒有解僱它從我們的開發人員中獲得了很多潛力。另外,Opera上次點擊時也沒有觸發中點擊的點擊事件。你確定mouseup不起作用嗎?它仍然應該算作用戶交互。 –

+0

if(button && button == 0)){< - 此行有一個')'太多... –

回答

1

但是,在某些瀏覽器中,鼠標右鍵和鼠標中鍵的默認操作不能禁用,或只能通過更改瀏覽器設置禁用。瀏覽器設置的這種改變通常影響通過瀏覽器查看的所有頁面,並且通常不能從Javascript完成。由於很少用戶想要這樣做,這意味着這些鼠標事件在Javascript中不可用。

http://www.unixpapa.com/js/mouse.html

相關問題