Est-il possible de lire le presse-papiers dans Firefox, Safari et Chrome en utilisant Javascript?

StackOverflow https://stackoverflow.com/questions/233719

Question

J'essaie de lire le contenu du presse-papiers en utilisant Javascript. Avec Internet Explorer, il est possible d’utiliser la fonction

window.clipboardData.getData("Text")

Existe-t-il une manière similaire de lire le presse-papiers dans Firefox, Safari et Chrome?

Était-ce utile?

La solution

Safari prend en charge la lecture du Presse-papiers lors d'événements onpaste :

Informations

Vous voulez faire quelque chose comme:

someDomNode.onpaste = function(e) {
    var paste = e.clipboardData && e.clipboardData.getData ?
        e.clipboardData.getData('text/plain') :                // Standard
        window.clipboardData && window.clipboardData.getData ?
        window.clipboardData.getData('Text') :                 // MS
        false;
    if(paste) {
        // ...
    }
};

Autres conseils

Les feuilles de calcul en ligne accrochent les événements Ctrl + C, Ctrl + V et transfèrent le focus sur un contrôle TextArea masqué et le définissent comme contenu du nouveau presse-papiers souhaité pour la copie ou lisent son contenu une fois l'événement terminé pour le coller.

NON. Et si vous trouvez un hack (une ancienne version de Flash, par exemple), n'en dépendez pas.

Puis-je vous demander pourquoi vous souhaitez lire dans le presse-papiers? Si l'utilisateur souhaite transmettre le contenu du presse-papiers, il lui suffit de coller.

Je pense que les gens utilisent un élément Flash caché pour lire les données du presse-papiers à partir des navigateurs mentionnés.

À l’aide de la suggestion de @agsamek, j’ai créé un petit test et l’a fait fonctionner. Dans mon cas, je dois attendre après un nouveau chargement de page pour une entrée collée. Je me concentre donc sur une zone de texte non visible et lis le texte à partir de là.

Vous pouvez étendre cela à l'écoute de touches spécifiques (combinaison de collage), puis vous concentrer sur le champ caché. Il resterait certainement beaucoup de travail à faire, car je pense que vous devez vous reconcentrer sur le dernier élément ciblé et coller le contenu à cet endroit.

Pour mon cas d'utilisation, cela suffisait toutefois pour que cela fonctionne dans les derniers Chrome et Firefox. Suggestions bienvenues.

https://jsfiddle.net/wuestkamp/91dxjv7s/11/

$(function () {

    $('body').prepend('<input type="text" id="hidden_textbox" style="position: absolute; width:0px; height: 0px; top: -100px; left: -100px">');

    var $hiddenTextbox = $('#hidden_textbox');
    $hiddenTextbox.focus();

    $(document).on('paste', function () {
        setTimeout(function () {
            var val = $hiddenTextbox.val();

            console.log('pasted: ' + val);

        }, 50);

    });

});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top