2016-12-03 69 views
1

我的網頁使用了大量由用戶上傳,由服務器處理並返回的數據。有時,用戶需要過濾部分數據,以便服務器只處理該數據的一部分。所以我的網頁有一個很好的「過濾器」按鈕,根據客戶端的狀態進行過濾。如何通過中鍵點擊打開JavaScript鏈接?

長話短說:我的客戶希望能夠所以在新標籤中打開中單擊該按鈕。 (有些實際上使用右鍵單擊 - >'在新標籤中打開',所以這也必須得到支持)

我是letting the user deciding how to open their links的大信徒,所以我不希望這個過濾器按鈕打開新窗口自動。但是我不能把它變成[href]鏈接,因爲我需要首先運行JS過濾器。

所以問題就變成了,我怎麼能在打開之前創建一個運行代碼的鏈接呢?

編輯:低於該用鼠標點擊事件的解決方案將失敗誰使用右鍵+在新標籤中打開,這是(原來)我的用戶中相當普遍的用戶。我已經更新了相應的問題。

+0

我不知道你是否可以結合一個普通的''與'onclick'聽衆... – qxz

+0

嘗試mousedown ... – YOU

+0

@YOU不能'mousedown'觸發如果用戶拖走並不實際點擊?即使用戶點擊了,它也不會提前開火嗎? – qxz

回答

0

對於任何人路過這裏,我沒有找到解決辦法:我一直都是我所需要的過濾後的數據瀏覽器的本地存儲。當用戶打開鏈接時,它將他重定向到一個頁面,該頁面知道查看本地存儲並在存儲的數據上運行邏輯,然後再將其重定向到正確的位置。

這並不理想:如果用戶試圖通過直接從href複製鏈接來共享鏈接,它將無法在另一個用戶的計算機上工作(儘管我可以在這種情況下顯示警告)。然而,如果用戶點擊鏈接,然後共享新打開的鏈接,它會起作用,所以我將此解決方案標記爲「足夠好」。

0

您可以使用一個簡單的onclick,然後在JavaScript利用event.button看到被點擊的鼠標按鈕。這將返回一個表示鼠標按鈕的整數值。 0是標準(通常是左)點擊,1爲鼠標中鍵(你想要的),2爲右鍵。這還允許重新配置指點設備,因此它將使用任何已設置的鍵作爲鼠標中鍵,而不是在使用物理中鍵鼠標時觸發。

你可以閱讀更多的event.buttonhttps://developer.mozilla.org/En/DOM/Event.button

編輯:

這可能是值得使用event.preventDefault()方法一樣,所以它不會打開新的標籤頁的鏈接(例如)。但是,如果你使用這個,你將不得不手動打開鏈接。

+0

然而,對於右鍵單擊並選擇「在新標籤中打開」的用戶,這將會失敗...... – Gilthans

+0

@Gilthans我認爲,如果要設置它,以便在事件之後運行event.preventDefault()' .button'檢查(所以在'if'語句中),那麼它將工作 –

0

使用一個按鈕,捕捉單擊事件中,你可以把你的過濾邏輯然後打開新的標籤頁。你總是可以使用CSS來使它看起來像按鈕或鏈接樣式。

你可以看到如何使用鼠標中鍵單擊this

0

你可以試試這個:

$("button").on('mousedown', function(e) { 
if(e.which == 1) { 
    //Left button clicked 
}else if(e.which == 2) { 
    //Middle button clicked 
} else if(e.which == 3) { 
    //Right button clicked 
} 
}); 
0

您可以使用JavaScript使用下面的想法。

HTML:

<a href="javascript:void(0);" onclick="clickMe();">Click Me</a> 

的Javascript:

function clickMe() { 

    //Do here whatsever you want 
    var test = "test"; 
    alert(test); 

    var link = "mylink/whatsever-query-string"; 

    /// Use this if you want open link in self window 
    // window.location.href = "mylink/whatsever-query-string"; 

    /// Use this if you want open link in new window 
    window.open(link, "", 'width=500, height=600, toolbar=no,location=no, resizable=yes,scrollbars=yes, directories=no,status=no, titlebar=no'); 

    /// Use this if you want open link in new tab 
    // window.open(link, '_blank'); 
} 

DEMO Fiddle

編輯:對於鼠標中鍵點擊就可以使用類似下面,

HTML

<div onmousedown="WhichButton(event)">ClickMouse</div> 

JAVASCRIPT

function WhichButton(event) { 
    var x = event.buttons; 
    if (x == 4) { 
    var test = "test"; 
    alert(test); 
    window.open('', '_blank'); 
    } 
} 

DEMO

相關問題