De nos jours, il existe de plus en plus de types de navigateurs, tels que IE, Firefox, Chrome, Safari, etc., il n'est donc pas si facile d'implémenter une petite fonction de copie de contenu dans le presse-papiers avec un JS.
Dans l'ère Flash 9, il y avait une solution pour tuer le contenu JS de tous les navigateurs dans le presse-papiers :
Cette solution est l'une des méthodes les plus populaires: la célèbre solution de copie du presse-papiers utilise un presse-papiers.swf comme pont pour copier du contenu dans le presse-papiers.
Le principe est: Créez un fichier flash caché et attribuez en même temps la valeur "Clipboard = .." au flash Flash. Grâce à cette affectation, le contenu copié sera placé dans le presse-papiers. Cette méthode est compatible avec IE, Firefox, Opera, Chrome et Safari, et est vraiment une solution "universelle". La vitesse d'installation du flash du navigateur est très élevée, ce qui est presque une solution parfaite.
La copie de code est la suivante:
<! Doctype html public "- // w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<adal>
<Title> Développeur Web - www.admin10000.com </Title>
<meta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8" />
<script type = "text / javascript">
var ClipboardSwfdata;
var setCopy_getText = function () {
ClipboardSwfdata = document.getElementById ('test_text'). Valeur;
// alerte (ClipboardWfdata);
window.Document.clipboardwf.setVariable ('Str', ClipboardWfdata);
}
var floatwin = function () {
alert ('Copier avec succès!');
//Document.getElementByid('clipinner').style.display = 'Aucun';
}
</cript>
</ head>
<body>
<textarea id = "test_text" rows = "15" cols = "100"> Contenu texte ..... </ textarea>
<div id = "Clipboard_content">
<div> <span id = "clipinner"> Copiez le code dans le presse-papiers
<embed name = "ClipboardSWf" id = "ClipboardSwf" onMouseOver = "setCopy_getText ()" DeviceFont = "false" src = "./_ Clipboard.swf" menu = "false" AbandScriptAccess = "SAMEDOMAIN" SWLIVECONNECT = "true" WMODE = "transparente" Type = "Application / X-shockwave-flash">
</span>
</div>
</div>
</docy>
</html>
L'adresse de téléchargement de Clipboard.swf: http://www.jeffothy.com/weblog/uploads/clipboard.php
Mais à l'ère Flash 10, la méthode ci-dessus n'est plus possible.
Parce que Flash10 stipule que seuls les opérations réelles sur SWF (comme le clic de souris) peuvent accéder au presse-papiers, tandis que la méthode ci-dessus utilise uniquement un fichier SWF masqué et fonctionne le presse-papiers Flash via JavaScript. L'utilisateur n'effectue pas d'opérations réelles sur le fichier SWF, donc cette méthode n'est pas valide.
Alors, comment résoudre ce problème de "véritable opération"? Vous pouvez utiliser une bibliothèque JavaScript: Zero Presse-papiers. Cette bibliothèque JS peut prendre en charge Flash 10 Copying dans le presse-papiers. Le principe de cette méthode consiste à écraser un élément DOM tel que le bouton ou le div sur un flash transparent (non visible pour l'utilisateur). Lorsque vous cliquez sur ce DOM, le clic réel de Flash est d'accéder au presse-papiers Flash.
Voici quelques exemples de débogage:
La copie de code est la suivante:
<! Doctype html public "- // w3c // dtd xhtml 1.0 transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<adal>
<Title> Zéro Test du presse-papiers </TITAL>
<meta http-equiv = "contenu-type" contenu = "text / html; charset = utf-8" />
<script type = "text / javascript" src = "zeroclipboard.js"> </ script>
<script type = "text / javascript">
var clip = null;
fonction $ (id) {return document.getElementById (id); }
fonction init () {
clip = new ZeroClipboard.Client ();
clip.sethandCursor (true);
clip.addeventListener ('MouseOver', fonction (client) {
// Mette à jour le texte sur la souris
clip.setText ($ ('fe_text'). valeur);
});
clip.addeventListener ('complet', fonction (client, texte) {
// Debugstr ("Copied Text dans le presse-papiers:" + texte);
alert ("Cette adresse a été copiée, vous pouvez le coller avec Ctrl + V.");
});
clip.glue ('clip_button', 'clip_container');
}
</cript>
</ head>
<body onload = "init ()">
<input id = "fe_text" cols = "50" rows = "5" value = "copier le texte du contenu">
<span id = "clip_continer"> <span id = "clip_button"> <strong> copier </strong> </span> </span>
</docy>
</html>
Cliquez pour télécharger cette bibliothèque: //www.vevb.com/jiaoben/24961.html
Veuillez télécharger sur le site Web pendant le débogage. Si vous ouvrez Flash directement localement, il y aura une erreur et il n'y aura pas d'autorisation. La propriété MoviePath dans le fichier ZeroClipboard.js est l'adresse de Falsh, qui est l'emplacement d'adresse où ZeroClipboard.swf est stocké dans le répertoire.
Cette solution pour copier du contenu dans le presse-papiers peut prendre en charge les navigateurs: Firefox / IE / Opera / Chorme / Safari All Browsers!