所以,目前我有一個腳本攔截在標籤上任意點擊鼠標,修改輸出鏈接,並在他們的方式向用戶發送:打開新選項卡自定義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事件結果的新窗口。
那麼....任何線索,如果這實際上是可能的?我寧願不讓用戶不得不允許彈出窗口,或重新映射他們的中間點擊功能以在當前窗口中打開。
在此先感謝您的幫助!
Firefox將不會觸發點擊事件錨元素「不破網絡」在中間擊,因爲「很多網站認爲‘onclick’事件僅觸發對於左鍵(因爲這是IE和NS4做的)。「請參閱https://bugzilla.mozilla.org/show_bug.cgi?id=156137 - 這是一個相當差的理由海事組織,因爲其他較新的瀏覽器確實解僱了它,並沒有解僱它從我們的開發人員中獲得了很多潛力。另外,Opera上次點擊時也沒有觸發中點擊的點擊事件。你確定mouseup不起作用嗎?它仍然應該算作用戶交互。 –
if(button && button == 0)){< - 此行有一個')'太多... –