2016-10-14 22 views
0

Ich möchte ersetzen erkennen einen Doppelklick mit Erkennung Ctrl -Klick, aber ich weiß nicht, wie es geht.Detect Strg + Klick in Event-Handler

$(document).ready(function() { 
    $(document).dblclick(function (e) { 
     var target = (e && e.target) || (event && event.srcElement); 
     var tag = target.tagName.toLowerCase(); 
     if (!(tag == 'input' || tag == 'textarea' || tag == 'img')) {  
      openIfSelected("dblclick"); 
     } 
    }); 
}); 
+0

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

Antwort

1

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.

+0

Als erstes danke für deine Antwort, es hat mir geholfen, wenn ich 'ctrl' benutze, 'ctrl' ist aktiv. Aber das Wort ist nicht ausgewählt. Ja, richtig, es ist jQuery-Code. Ich versuche diesen Code in der 'content_script.js' Datei zu bearbeiten. Eigentlich habe ich meinem Google Chrome Browser eine Wörterbucherweiterung hinzugefügt, dann entschied ich, dass ich 'Strg' hinzufügen würde, wenn ich irgendein Wort mit 'Doppelklick' auswähle. Das bedeutet, ich versuche, wenn ich 'Strg + Doppelklick' Wort könnte neue Registerkarte öffnen ... Bitte helfen Sie mir. –

+0

Ich versuchte wie unten. $ (document) .ready (function() { $ (document) .click (function (e) { if (e.ctrlKey) { var target = e.target; var tag = target.tagName.toLowerCase(); wenn { openIfSelected ("dblclick"); } ((tag == 'Eingang' || Tag == 'Textfeld' || Tag == 'img')!) } }); }); –

0

Ich habe das behoben. Vielen Dank Makyen.

$(document).ready(function() { 
    $(document).click(function (e) { 
     if(event.ctrlKey){ 
      var target = event.srcElement; 
      var tag = target.tagName.toLowerCase(); 
      if (!(tag == 'input' || tag == 'textarea' || tag == 'img')) { 
       openIfSelected("dblclick"); 
      } 
     } 
    }); 
}); 
+0

Ich sah Neuausgabe Kleinbuchstaben. Ich versuche, wenn ich irgendein Wort selbst Titel, Großbuchstaben, die wie Kleinbuchstaben konvertieren wird. Da 'http://dictionary.cambridge.org/dictionary/english/' nicht funktioniert Title und Großbuchstaben. Beispiel # 1: http://dictionary.cambridge.org/dictionary/english/easy Beispiel # 2: http://dictionary.cambridge.org/dictionary/english/Easy Ich brauche Ihre beste Hilfe, bitte . –

Verwandte Themen