Il n'y a qu'une seule façon que je suis capable de le faire. Le problème que vous rencontrez, comme vous le savez peut-être, est que lorsque vous cliquez sur le bouton (ce qui déclenche l'événement pour copier la sélection), la zone de texte perd le focus et, par conséquent, aucun texte n'est sélectionné. Pour contourner le problème, j'ai créé un div pour ressembler (un peu) à une zone de texte. Cela semble fonctionner:
<style type="text/css">
.textarea {
border:1px solid black;
width:200px;
height:100px;
overflow-y: auto;
float:left;
}
</style>
Le balisage ressemble alors à ceci:
<div id="input" class="textarea">This is a test</div>
<textarea id="selection"></textarea>
<button id="theButton">Copy</button>
Et enfin, le script:
var selText = "";
$(document).ready(function() {
$('#theButton').mousedown(function() {
$('#selection').val(getSelectedText());
});
});
function getSelectedText(){
if (window.getSelection) {
return window.getSelection().toString();
}
else if (document.getSelection) {
return document.getSelection();
} else if (document.selection) {
return document.selection.createRange().text;
}
}
Pour donner plein crédit où il est dû, je suis la Méthode getSelectedText() de http://esbueno.noahstokes.com/post/92274686/highlight-selected-text-with-jquery
Cela fonctionne parfaitement dans Safari et Firefox. Savez-vous sur quels autres navigateurs cela va fonctionner? Il semble que la première instruction if fonctionne pour Safari et Firefox. Quels navigateurs est la seconde instruction if pour? – joeljoeljoel
Fonctionne dans IE 6 et versions ultérieures et Opera, donc tout est majeur. La deuxième branche est pour IE. –