Sie sind für die jQuery .click()
-Methode und der MouseEvent.ctrlKey
Eigenschaft suchen.
Man könnte so etwas wie tun:
$(document).ready(function() {
$(document).click(function (e) {
if(e.ctrlKey){
var tag = e.target.tagName.toLowerCase();
if (!(tag == 'input' || tag == 'textarea' || tag == 'img')) {
openIfSelected("dblclick"); //Still pass "dblclick", but upon Ctrl-click
}
}
});
});
function openIfSelected(reason){
//This is now only called upon Ctrl-click, but the "reason" remains "dblclick".
console.log('Called "openIfSelected" with reason: ' + reason);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div><kbd>Ctrl</kbd>-Click me</div>
Hinweis:
Sie verwendet den Code:
Diese seltsame ist als geschrieben. Sie haben wahrscheinlich versucht, window.event
zu verwenden. Dies ist jedoch nicht erforderlich, weil Sie jQuery, which normalizes the event object that is passed to event handlers verwenden, speziell, damit Sie solche Dinge nicht tun müssen. Darüber hinaus deklarieren die von Ihnen verwendeten Tags diese Frage als Google Chrome-Erweiterungsproblem. Wenn dies der Fall ist und Sie jQuery nicht verwenden, müssen Sie dies auch nicht tun, da Sie die Verwendung des Codes in älteren Browsern (z. B. IE) nicht berücksichtigen müssen.
Ist das wirklich für eine Google Chrome Extension (es sieht wie eine allgemeine jQuery Frage aus)? Wenn ja, warum verwenden Sie '(event && event.srcElement)', wenn Sie 'event' scheinbar nicht definieren. Selbst wenn Sie '(e && e.srcElement) gemeint haben, ist' event.srcElement' eine alte IE-Sache (die ignoriert, dass Sie jQuery verwenden). Wenn es sich um eine Google Chrome-Erweiterung handelt, ist kein Code erforderlich, der für ältere Browser zur Verfügung steht. Möglicherweise müssen Sie mit anderen Browsern arbeiten, wenn Sie versuchen, dass Ihre Erweiterung in mehreren Browsern funktioniert, die mit Chrome-Erweiterungen kompatibel sind, nicht aber mit IE. – Makyen