2012-06-06 24 views
3

通常情況下,此組合可在Chrome,Firefox和Mac版Safari中打開鏈接,作爲新標籤。有什麼辦法可以檢測到這個嗎?我知道jquery的event.which,但它的值爲1,與簡單的左鍵單擊無法區分。如何在javascript中檢測Command-Shift-Click for OS X?

用例與Backbone HTML5 pushstate,我想附加一個'click'事件處理程序,它不會觸發頁面加載以進行正常導航,但仍然允許用戶使用⌘-open在新選項卡中打開鏈接-Click。

回答

3

您可以使用事件的metaKeyshiftKey屬性:

$(window).click(function(e) { 
    if(e.metaKey && e.shiftKey) { 
    console.log("Command+Shift+Click"); 
    } else { 
    console.log("Other click"); 
    } 
}); 

所以,如果,例如,你在做#!路由,而不是實際以下網址,並希望命令或命令+ SHIFT做正常行爲(打開一個新標籤),你會有類似的東西

function followLink(e) { 
    if(!e.metaKey) e.preventDefault(); 
    yourApp.navigate('/link'); 
} 
+0

對於pushState,爲了使這也適用於Windows你需要檢查e.ctrlKey。 http://chrome.blogspot.com/2009/08/tip-opening-links-in-new-tabs.html – sye