Comment charger une réponse Ajax dans le presse-papiers en utilisant jQuery et ZeroClipboard?

J’ai besoin d’un moyen de copier dynamicment (Ajax) le contenu chargé dans le Presse-papiers dans un navigateur Web. Il existe de nombreuses bibliothèques qui imiteront la fonctionnalité de copie dans le Presse-papiers en utilisant Flash. Cependant, avec les nouveaux parameters de sécurité par défaut de Flash 10, les parameters de copie dans le Presse-papiers nécessitent désormais une confirmation explicite de l’utilisateur. ZeroClipboard est une bibliothèque Javascript / Flash qui permet de contourner cette “limitation” (utilisation du clic-jacking vidéo Flash).

Voici un simple plugin JQuery que j’ai écrit pour intégrer ZeroClipboard dans mon application:

// A jQuery plugin for copying Ajax content into clipboard (function($) { $.fn.clickToClipboard = function() { $(this).each( function() { var link = $(this); if ( link.is('a') ) { var clip = new ZeroClipboard.Client(); clip.glue(this); clip.addEventListener('onMouseDown', function(){ link.html('copying...'); clip.reposition(); $.ajax({ url: link.attr('href'), success: function(content) { clip.setText(content); }, async: false }); }); clip.addEventListener('onComplete', function(){ link.html('copied!'); clip.reposition(); }); } }); } })(jQuery); 

Chaque URL d’ancrage pointe vers un fichier texte sur le serveur. Lorsque vous cliquez sur l’animation flash (lien déclic), le fichier texte correspondant de l’ancre est chargé dans le presse-papiers via Ajax et ZeroClipboard.

Ce plugin fonctionne très bien dans Safari (même pour un fichier texte de plus de 4000 lignes prototype.js). Cependant, il échoue sur FF3.0 même sur un simple fichier texte avec une ligne: “hello”. J’ai enregistré le contenu de mon appel Ajax dans la console. Le rappel de réussite semble fonctionner. Il semble que cliquer sur le film une seconde fois complète la copie (car le navigateur met en cache le fichier texte du premier appel Ajax).

Notez que j’ai utilisé un appel Ajax synchrone ici pour attendre que le texte se termine. Quelqu’un sait pourquoi mon code ne fonctionne pas comme prévu? (Je ne sais pas si c’est pertinent, mon backend est fait dans Rails).

Supprimé ma première réponse après avoir réalisé que j’avais mal compris votre question. Pardon.

Ce que je voudrais essayer est de récupérer les données ajax d’abord, puis définissez le texte avec le listner d’événements.