77 votes

Copie dans le presse-papiers sans Flash

J'ai trouvé beaucoup de solutions pour copier dans le presse-papiers, mais ils ont tous soit avec flash, ou pour les sites secondaires. Je suis à la recherche de méthode de copie dans le presse-papiers automatiquement, sans flash et pour le côté utilisateur, c'est pour les userscripts et bien sûr de la croix-navigateur.

33voto

Michael Borgwardt Points 181658

Sans flash, c'est tout simplement pas possible dans la plupart des navigateurs. L'utilisateur du presse-papiers de la sécurité, des ressources pertinentes, car il pourrait contenir des choses comme des mots de passe ou numéros de carte de crédit. Ainsi, les navigateurs, à juste titre, de ne pas permettre l'accès Javascript (certains l'autorisent avec un avertissement montré que l'utilisateur a confirmer, ou à la signature du code Javascript, mais rien de cela n'est cross-browser).

24voto

julioS Points 334

J'avais essayé la solution flash et je n'ai pas trop aimé. Trop complexe et trop lent. Ce que j'ai fait était de créer un textarea, placer les données dans et à utiliser le navigateur "CTRL + C" de comportement.

La partie javascript jQuery:

// catch the "ctrl" combination keydown
$.ctrl = function(key, callback, args) {
    $(document).keydown(function(e) {
        if(!args) args=[]; // IE barks when args is null
        if(e.keyCode == key && e.ctrlKey) {
            callback.apply(this, args);
            return false;
        }
    });
};

// put your data on the textarea and select all
var performCopy = function() {
    var textArea = $("#textArea1");
    textArea.text('PUT THE TEXT TO COPY HERE. CAN BE A FUNCTION.');
    textArea[0].focus();
    textArea[0].select();
};

// bind CTRL + C
$.ctrl('C'.charCodeAt(0), performCopy);

La partie HTML:
<textarea id="textArea1"></textarea>

Maintenant, mettez ce que vous voulez copier dans " METTRE LE TEXTE À COPIER ICI. PEUT ÊTRE UNE FONCTION.. Fonctionne très bien pour moi. Il vous suffit de faire un CTRL+C combinaison. Le seul inconvénient est que vous allez avoir une vilaine textarea affiché dans votre site. Si vous utilisez le style="display:none" la copie de la solution ne fonctionnera pas.

3voto

mrBorna Points 728

Vous pouvez utiliser un presse-papiers local à la page HTML. Cela vous permet de couper/copier/coller le contenu DANS la page HTML, mais pas à partir de/vers des applications tierces ou entre deux pages HTML.

C'est la façon dont vous pouvez écrire une fonction personnalisée pour ce faire (testé sur chrome et firefox):

Ici, c'est le VIOLON qui montre comment vous pouvez le faire.

Je vais aussi coller le violon ici pour référence.


HTML

<p id="textToCopy">This is the text to be copied</p>
<input id="inputNode" type="text" placeholder="Copied text will be pasted here" /> <br/>

<a href="#" onclick="cb.copy()">copy</a>
<a href="#" onclick="cb.cut()">cut</a>
<a href="#" onclick="cb.paste()">paste</a>

JS

function Clipboard() {
    /* Here we're hardcoding the range of the copy
    and paste. Change to achieve desire behavior. You can
    get the range for a user selection using
    window.getSelection or document.selection on Opera*/
    this.oRange = document.createRange();
    var textNode = document.getElementById("textToCopy");
    var inputNode = document.getElementById("inputNode");
    this.oRange.setStart(textNode,0);
    this.oRange.setEndAfter(textNode);
    /* --------------------------------- */
}

Clipboard.prototype.copy = function() {
    this.oFragment= this.oRange.cloneContents();
};

Clipboard.prototype.cut = function() {
    this.oFragment = this.oRange.extractContents();
};

Clipboard.prototype.paste = function() {
    var cloneFragment=this.oFragment.cloneNode(true)
    inputNode.value = cloneFragment.textContent;
};

window.cb = new Clipboard();

-1voto

Talha Ahmed Khan Points 5060

Il n'y a pas moyen de contourner, vous devez utiliser le flash. Il y a un plugin JQuery appelle jquery.copie qui a fourni de la croix-navigateur, copier et coller à l'aide d'un flash (swf). Ceci est similaire à la façon dont la syntaxe surligneur sur mon blog fonctionne.

Une fois que vous faites référence à la jquery.copy.js fichier tout ce que vous devez faire pour envoyer les données dans le presse-papiers exécutez la commande suivante:

$.copy("some text to copy");

Agréable et facile ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: