2017-02-07 44 views
1

1つの単語をダブルクリックすると、その単語が選択され、3回クリックすると1行または1つの段落全体が選択されます。ここでJavascript - トリプルクリックで全体のテキスト選択を防止し、単一の単語のみを選択します

、私はトリプルクリックですべての単語を選択防ぎ、私はこれがあなたのために働く、このコード

function clearSelection() { 
    if(document.selection && document.selection.empty) { 
     document.selection.empty(); 
    } else if(window.getSelection) { 
     var sel = window.getSelection(); 
     sel.removeAllRanges(); 
    } 
} 
+0

'' 'clearSelection()' ''はいつ呼び出されますか? – uncoder

+0

そこに選択されたテキストがある場合は、@uncoderをクリアします – Hunter

+0

私は理解できません。完全なJavaScriptコードを投稿したり、JSFiddleページを作成できますか? – uncoder

答えて

0

と試みただけで、単一の単語

を選択するように変更したいですか? jsfiddle

私はあなたのフィドルを編集します。

document.querySelector('div').addEventListener('click', function (evt) { 
    var o = this, 
     ot = this.textContent; 
    if (evt.detail >= 3) { 
     clearSelection(); 
    } 
}); 

function clearSelection() { 
    if(document.selection && document.selection.empty) { 
     document.selection.empty(); 
    } else if(window.getSelection) { 
     var sel = window.getSelection(); 
     sel.removeAllRanges(); 
    } 

}

0

ここに私のフォークです:http://jsfiddle.net/kr2t0bpw/1/

これが第二のクリックで選択されたワードをキャプチャし、オフセットを保存します。 3回目のクリックで選択範囲がクリアされ、以前に保存されたオフセットで新しいものが作成されます。

var throttle = false; 
var sel = window.getSelection(); 
var selStart = 0; 
var selEnd = 0; 

document.querySelector('div').addEventListener('click', function (evt) {  
    if (!throttle && evt.detail === 2) { 
     selStart = sel.anchorOffset; 
     selEnd = sel.focusOffset; 
    } 

    if (!throttle && evt.detail === 3) { 
    var node = this.firstChild; 
    sel.removeAllRanges(); 
    throttle = true; 

    var range = document.createRange(); 
    range.setStart(node, selStart); 
    range.setEnd(node, selEnd) 

    sel.removeAllRanges(); 
    sel.addRange(range); 
    } 
}); 
関連する問題