2016-10-14 19 views
0

ダブルクリックの検出をのCtrl -clickで置き換えたいと思いますが、その方法はわかりません。イベントハンドラでCtrl +クリックを検出する

$(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

Google Chrome拡張機能(これはジェネリックjQueryの質問のようです)のためのものですか?もしそうなら、あなたが 'event'を定義していないときに'(event && event.srcElement) 'を使っているのはなぜですか? '(e && e.srcElement)'を意味していても、 'event.srcElement'は古いIEのものです(あなたがjQueryを使用していることは無視してください)。これがGoogle Chrome拡張機能の場合、古いブラウザを扱うためのコードは必要ありません。 Chrome拡張機能と互換性を持つ複数のブラウザで拡張機能を使用しようとしている場合、他のブラウザを処理する必要があるかもしれませんが、IEでは使用できません。 – Makyen

答えて

1

あなたはjQueryの.click()方法とMouseEvent.ctrlKeyプロパティを探しています。

$(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>

注:

あなたのような何かができる
あなたがコードを使用:書かれたよう

これは奇妙です。おそらくwindow.eventを使用しようとしていました。ただし、jQuery, which normalizes the event object that is passed to event handlersを使用しているため、特にこのような操作を行う必要がないため、これは必要ありません。また、使用しているタグでこの問題がGoogle Chrome拡張機能の問題として宣言されています。そのような場合、jQueryを使用していない場合は、古いブラウザ(IEなど)でのコードの使用を考慮する必要がないため、これを行う必要はありません。

+0

最初にあなたの答えをありがとう、それは私が 'ctrl'を使用するときのように私を助けた、 'ctrl'が有効です。しかし、単語は選択されていません。 はい、これはjQueryコードです。私は 'content_script.js'ファイルでこのコードを編集しようとしています。 実際にGoogle Chromeブラウザに辞書拡張機能を追加したところ、「ダブルクリック」で単語を選択すると「Ctrl」を追加すると決めました。それは私が 'Ctrl +ダブルクリック'の言葉で新しいタブを開くことができたときに私がやっていることを意味します... 私を助けてください。 –

+0

私は以下のようにtryied。 $(document).ready(function(){ $(document).click(function(e){ if(e.ctrlKey){ var target = e.target; varタグ= target.tagName.toLowerCase (); IF(!(タグ== '入力' ||タグ== 'TEXTAREA' ||タグ== 'IMG')){ openIfSelected( "DBLCLICK");} }}); }); –

0

このように修正しました。ビッグマクリーンに感謝します。

$(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

私は新しい問題の小文字に直面しました。タイトル、大文字の小文字のように変換する単語を選択するときに試してみます。 「http://dictionary.cambridge.org/dictionary/english/」はタイトルと大文字が正しく動作しないためです。 例#1:http://dictionary.cambridge.org/dictionary/english/easy 例#2:http://dictionary.cambridge.org/dictionary/english/Easy 私はあなたの最善の助けが必要です。 –

関連する問題