2015-08-30 38 views
2

我寫了一個JavaScript,當我點擊一個鏈接時,在「content」div中打開一個特定的頁面。Keycode問題 - 幾乎與ctrlKey一起工作KeyKey

HTML:

<li><a href='#' onclick="load_shift_test()">Soft Drinks</a></li> 

JS:

function load_shift_test(){ 
    document.getElementById("content").innerHTML='<object type="text/php" data="mineralwater.php" ></object>'; 

這工作,但我需要它,如果某個鍵被按下2頁之間選擇點擊鏈接,所以我改寫了的時候腳本是這樣的:

function load_shift_test(){ 
    document.getElementById("content").innerHTML='<object type="text/php" data="mineralwater.php" ></object>'; 
if (event.ctrlKey) 
    document.getElementById("content").innerHTML='<object type="text/php" data="mineralwateredit.php"></object>'; 

} 

這也適用,但它會在Chrome和我打開一個新標籤真的不喜歡它。

我理想上喜歡打開頁面,如果按下「e」鍵(沒有按Ctrl)。我怎樣才能做到這一點?

回答

0

這裏的問題是Chrome在觸發任何JS事件之前重寫Ctrl +單擊作爲新的窗口快捷方式。如果你想讓「e」成爲一個修飾鍵,創建一個跟蹤鍵位置狀態的jQuery事件。

window.keyDown = false; //Start with key down is false 
$(document).keyup(function(event) { //On key up switch to false 
    window.keyDown = (event.keyCode == 69) ? false : window.keyDown; 
}).keydown(function(event) { //On key down switch to true 
    window.keyDown = (event.keyCode == 69) ? true : window.keyDown; 
}); 

然後你就可以通過檢查全局變量window.keyDown採取行動load_shift_test()

+0

釘住它!非常感謝 !! –

0

當用戶在任何超鏈接上執行ctrl + click時,正常的瀏覽器行爲是在新選項卡中打開此超鏈接。 JavaScript代碼無法阻止此行爲。

但是,如果您想要停止打開新選項卡,您需要從錨鏈接中刪除href屬性或僅使用另一個HTML元素(例如div,span)。

這是JsFiddle Demo