En plus de Tim Bas de répondre, je voudrais sauver que vous pourriez faire de cette façon:
var selectText = function() {
var range, selection;
if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(this);
range.select();
} else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(this);
selection.removeAllRanges();
selection.addRange(range);
}
};
document.getElementById("foo").ondblclick = selectText;
Testé sous IE 8+, Firefox 3+, Opera 9+, & Chrome 2+. Même moi, je l'ai mis dans un plugin jQuery:
jQuery.fn.selectText = function() {
var range, selection;
return this.each(function() {
if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToElementText(this);
range.select();
} else if (window.getSelection) {
selection = window.getSelection();
range = document.createRange();
range.selectNodeContents(this);
selection.removeAllRanges();
selection.addRange(range);
}
});
};
$('#foo').dblclick(function() {
$(this).selectText();
});
...et qui intereseted, voici la même chose pour tout le café-junkies:
jQuery.fn.selectText = ->
if document.body.createTextRange
range = document.body.createTextRange()
range.moveToElementText @[0]
range.select()
else if window.getSelection
selection = window.getSelection()
range = document.createRange()
range.selectNodeContents @[0]
selection.removeAllRanges()
selection.addRange range
Mise à jour:
Si vous avez besoin de mettre en évidence l'ensemble de la page ou du texte dans les éléments marqués d' contenteditable
, de sorte que vous pouvez faire beaucoup plus simple:
https://developer.mozilla.org/en-US/docs/Rich-Text_Editing_in_Mozilla#Executing_Commands
var selectText = function () {
document.execCommand('selectAll', false, null);
};
(fonctionne bien dans IE6+, Opera 9+, Firefoy 3+, Chrome 2+)