2010-02-17 6 views
6

Pouvez-vous obtenir le mot sur lequel l'utilisateur a double-cliqué? J'ai essayé dans un onDblClick eventhandler mais selectionStart est indéfini là; et l'événement onselect semble être disponible uniquement pour TextArea.Comment obtenir le mot sélectionné en double-cliquant sur div, p, span?

+1

La seule façon que j'ai été capable de faire est d'emballer chaque mot dans son propre SPAN. Yahoo sait quel mot est mis en évidence lorsque vous faites un clic droit. Et dans IE, les accélérateurs connaissent aussi le mot mis en évidence. Sont-ils connectés au navigateur "en dessous" de la couche javascript/DOM, à une API? – Tim

+0

Autrement dit, Yahoo Search dans le menu contextuel de Firefox. – Tim

Répondre

8

Vous pouvez utiliser document.selection.createRange().text dans IE, et window.getSelection().toString() dans Firefox et WebKit, et attacher au gestionnaire ondblclick comme ceci:

document.ondblclick = function() { 
    var sel = (document.selection && document.selection.createRange().text) || 
      (window.getSelection && window.getSelection().toString()); 
    alert(sel); 
}; 

Références:

  • MSDN, pour document.selection
  • MDN, pour window.getSelection()