J'ai remarqué un article de blog de Google qui mentionne la possibilité de coller des images directement à partir du presse-papiers dans un message Gmail si vous utilisez la dernière version de Chrome. J'ai essayé cela avec ma version de Chrome (12.0.742.91 beta-m) et cela fonctionne très bien en utilisant les touches de contrôle ou le menu contextuel.
À partir de ce comportement, je dois supposer que la dernière version du kit Web utilisée dans Chrome est capable de traiter les images dans l'événement de collage Javascript, mais je n'ai pas pu localiser de références à une telle amélioration. Je pense que ZeroClipboard se lie aux événements de pression de touche pour déclencher sa fonctionnalité flash et, en tant que tel, ne fonctionnerait pas via le menu contextuel (également, ZeroClipboard est multi-navigateur et l'article dit que cela ne fonctionne qu'avec Chrome).
Alors, comment cela fonctionne-t-il et où l'amélioration a été apportée à Webkit (ou Chrome) qui active la fonctionnalité?
la source
Réponses:
J'ai passé un certain temps à expérimenter cela. Il semble en quelque sorte suivre la nouvelle spécification de l'API Clipboard . Vous pouvez définir un gestionnaire d'événement "coller" et consulter event.clipboardData.items, et appeler getAsFile () sur eux pour obtenir un Blob. Une fois que vous avez un objet blob, vous pouvez utiliser FileReader dessus pour voir ce qu'il contient . Voici comment obtenir une URL de données pour les éléments que vous venez de coller dans Chrome:
Une fois que vous avez une URL de données, vous pouvez afficher l'image sur la page. Si vous souhaitez le télécharger à la place, vous pouvez utiliser readAsBinaryString, ou vous pouvez le placer dans un XHR à l'aide de FormData .
la source
La réponse de Nick semble avoir besoin de petits changements pour fonctionner encore :)
Exemple de code en cours d'exécution: http://jsfiddle.net/bt7BU/225/
Donc, les changements apportés aux pseudos ont été:
à
J'ai également dû prendre le deuxième élément des éléments collés (le premier semble être du texte / html si vous copiez une image d'une autre page Web dans le tampon). Alors j'ai changé
vers une boucle trouvant l'élément contenant l'image (voir ci-dessus)
Je ne savais pas comment répondre directement à la réponse de Nick, j'espère que tout va bien ici: $ :)
la source
clipboardData.items
est toujours vide dans Google Chrome (Firefox fonctionne). Le chrome nécessite maintenant presque autant d'optimisation qu'avant.event.clipboardData.items
a bien fonctionné pour moi sur la dernière version de Chrome, je ne sais pas quandevent.originalEvent...
est-ce utile?Voici un plugin jQuery fluide qui résume toute l'affaire (fondamentalement les mêmes principes que la réponse de Nick ): http://strd6.com/2011/09/html5-javascript-pasting-image-data-in-chrome/
Il contient une démo en direct, un code source annoté et tout.
la source
Les navigateurs Web continuent d'avancer. J'ai récemment trouvé ceci:
Extrait de code - Accéder aux images du presse-papiers avec Javascript
et ça:
The Paste Wasteland (ou, pourquoi l'événement onPaste est un gâchis)
Le premier lien décrit un moyen d'obtenir des images de presse-papiers en utilisant JavaScript uniquement sur Firefox et Chrome. Le deuxième lien contient un post-scriptum qui mentionne que la même technique a été adaptée à IE (version inconnue).
la source
Pour autant que je sache -
Avec les fonctionnalités HTML 5 (File Api et les éléments associés) - l'accès aux données d'image du presse-papiers est désormais possible avec du javascript brut.
Cela ne fonctionne cependant pas sur IE (rien de moins que IE 10). Je ne sais pas grand-chose sur le support IE10 également.
Pour IE, les optiens que je crois être les options de `` secours '' utilisent soit l'API AIR d'Adobe, soit une applet signée
la source
Wow, c'est cool. Je n'ai pas encore plongé dans la source gmail pour le comprendre (je l'ai fait avec la fonctionnalité de glisser-déposer), mais je suppose que c'est une extension de l'API glisser / déposer que Chrome a déjà étendue. Il y a un article décent sur le fonctionnement de la fonction glisser vers le bureau: http://www.thecssninja.com/javascript/gmail-dragout qui peut au moins vous orienter dans la bonne direction.
la source
Ceci est d'un exemple avec le typographie angular2 qui fonctionne pour mon projet. J'espère que ça aide quelqu'un. La logique est la même pour les autres cas également.
https://gist.github.com/sandeepsuvit/a8ba77faebba260455985504be24aef7
Voici une implémentation en direct:
https://stackblitz.com/edit/angular-f7kcny?file=app/app.component.ts
la source
https://stackblitz.com/edit/angular-f7kcny?file=app/app.component.ts
dans Chrome, puis cliquer avec le bouton droit sur une image de n'importe quel site Web. Puis collez-le dans la zone de texte fournie. Cela devrait fonctionner de cette façon.https://github.com/layerssss/paste.js/
,https://github.com/JoelBesada/pasteboard
. Il existe des démos disponibles sur ces liens que vous pouvez essayer.