Maison interface Web js tutoriel JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)_javascript技巧

JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)_javascript技巧

May 16, 2016 pm 05:33 PM
剪贴板

目前,如果使用javascript来写复制到剪贴板的代码,一般都是浏览器不兼容的。所以采用flash的方式,模拟一个层,再来复制,就可以做到全部浏览器都适用哦~

需要下载一个swf文件,和一个js文件。把这两个文件,和htm放到一起。
图示:


必须放在服务器端使用哦。
图示:


JS代码:
复制代码 代码如下:

ZeroClipboard.js
// Simple Set Clipboard System
// Author: Joseph Huckaby
var ZeroClipboard = {
version: "1.0.7",
clients: {}, // registered upload clients on page, indexed by id
moviePath: 'ZeroClipboard.swf', // URL to movie
nextId: 1, // ID of next movie
$: function(thingy) {
// simple DOM lookup utility function
if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
if (!thingy.addClass) {
// extend element with a few useful methods
thingy.hide = function() { this.style.display = 'none'; };
thingy.show = function() { this.style.display = ''; };
thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
thingy.removeClass = function(name) {
var classes = this.className.split(/\s+/);
var idx = -1;
for (var k = 0; k if (classes[k] == name) { idx = k; k = classes.length; }
}
if (idx > -1) {
classes.splice( idx, 1 );
this.className = classes.join(' ');
}
return this;
};
thingy.hasClass = function(name) {
return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
};
}
return thingy;
},
setMoviePath: function(path) {
// set path to ZeroClipboard.swf
this.moviePath = path;
},
dispatch: function(id, eventName, args) {
// receive event from flash movie, send to client
var client = this.clients[id];
if (client) {
client.receiveEvent(eventName, args);
}
},
register: function(id, client) {
// register new client to receive events
this.clients[id] = client;
},
getDOMObjectPosition: function(obj, stopObj) {
// get absolute coordinates for dom element
var info = {
left: 0,
top: 0,
width: obj.width ? obj.width : obj.offsetWidth,
height: obj.height ? obj.height : obj.offsetHeight
};
while (obj && (obj != stopObj)) {
info.left += obj.offsetLeft;
info.top += obj.offsetTop;
obj = obj.offsetParent;
}
return info;
},
Client: function(elem) {
// constructor for new simple upload client
this.handlers = {};
// unique ID
this.id = ZeroClipboard.nextId++;
this.movieId = 'ZeroClipboardMovie_' + this.id;
// register client with singleton to receive flash events
ZeroClipboard.register(this.id, this);
// create movie
if (elem) this.glue(elem);
}
};
ZeroClipboard.Client.prototype = {
id: 0, // unique ID for us
ready: false, // whether movie is ready to receive events or not
movie: null, // reference to movie object
clipText: '', // text to copy to clipboard
handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
cssEffects: true, // enable CSS mouse effects on dom container
handlers: null, // user event handlers
glue: function(elem, appendElem, stylesToAdd) {
// glue to DOM element
// elem can be ID or actual DOM element object
this.domElement = ZeroClipboard.$(elem);
// float just above object, or zIndex 99 if dom element isn't set
var zIndex = 99;
if (this.domElement.style.zIndex) {
zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
}
if (typeof(appendElem) == 'string') {
appendElem = ZeroClipboard.$(appendElem);
}
else if (typeof(appendElem) == 'undefined') {
appendElem = document.getElementsByTagName('body')[0];
}
// find X/Y position of domElement
var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
// create floating DIV above element
this.div = document.createElement('div');
var style = this.div.style;
style.position = 'absolute';
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
style.width = '' + box.width + 'px';
style.height = '' + box.height + 'px';
style.zIndex = zIndex;
if (typeof(stylesToAdd) == 'object') {
for (addedStyle in stylesToAdd) {
style[addedStyle] = stylesToAdd[addedStyle];
}
}
// style.backgroundColor = '#f00'; // debug
appendElem.appendChild(this.div);
this.div.innerHTML = this.getHTML( box.width, box.height );
},
getHTML: function(width, height) {
// return HTML for movie
var html = '';
var flashvars = 'id=' + this.id +
'&width=' + width +
'&height=' + height;
if (navigator.userAgent.match(/MSIE/)) {
// IE gets an OBJECT tag
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
html += ' ';
}
else {
// all other browsers get an EMBED tag
html += '';
}
return html;
},
hide: function() {
// temporarily hide floater offscreen
if (this.div) {
this.div.style.left = '-2000px';
}
},
show: function() {
// show ourselves after a call to hide()
this.reposition();
},
destroy: function() {
// destroy control and floater
if (this.domElement && this.div) {
this.hide();
this.div.innerHTML = '';
var body = document.getElementsByTagName('body')[0];
try { body.removeChild( this.div ); } catch(e) {;}
this.domElement = null;
this.div = null;
}
},
reposition: function(elem) {
// reposition our floating div, optionally to new container
// warning: container CANNOT change size, only position
if (elem) {
this.domElement = ZeroClipboard.$(elem);
if (!this.domElement) this.hide();
}
if (this.domElement && this.div) {
var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
var style = this.div.style;
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
}
},
setText: function(newText) {
// set text to be copied to clipboard
this.clipText = newText;
if (this.ready) this.movie.setText(newText);
},
addEventListener: function(eventName, func) {
// add user event listener for event
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
if (!this.handlers[eventName]) this.handlers[eventName] = [];
this.handlers[eventName].push(func);
},
setHandCursor: function(enabled) {
// enable hand cursor (true), or default arrow cursor (false)
this.handCursorEnabled = enabled;
if (this.ready) this.movie.setHandCursor(enabled);
},
setCSSEffects: function(enabled) {
// enable or disable CSS effects on DOM container
this.cssEffects = !!enabled;
},
receiveEvent: function(eventName, args) {
// receive event from flash
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
// special behavior for certain events
switch (eventName) {
case 'load':
// movie claims it is ready, but in IE this isn't always the case...
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
this.movie = document.getElementById(this.movieId);
if (!this.movie) {
var self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 1 );
return;
}
// firefox on pc needs a "kick" in order to set these in certain cases
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
var self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 100 );
this.ready = true;
return;
}
this.ready = true;
this.movie.setText( this.clipText );
this.movie.setHandCursor( this.handCursorEnabled );
break;
case 'mouseover':
if (this.domElement && this.cssEffects) {
this.domElement.addClass('hover');
if (this.recoverActive) this.domElement.addClass('active');
}
break;
case 'mouseout':
if (this.domElement && this.cssEffects) {
this.recoverActive = false;
if (this.domElement.hasClass('active')) {
this.domElement.removeClass('active');
this.recoverActive = true;
}
this.domElement.removeClass('hover');
}
break;
case 'mousedown':
if (this.domElement && this.cssEffects) {
this.domElement.addClass('active');
}
break;
case 'mouseup':
if (this.domElement && this.cssEffects) {
this.domElement.removeClass('active');
this.recoverActive = false;
}
break;
} // switch eventName
if (this.handlers[eventName]) {
for (var idx = 0, len = this.handlers[eventName].length; idx var func = this.handlers[eventName][idx];
if (typeof(func) == 'function') {
// actual function reference
func(this, args);
}
else if ((typeof(func) == 'object') && (func.length == 2)) {
// PHP style object + method, i.e. [myObject, 'myMethod']
func[0][ func[1] ](this, args);
}
else if (typeof(func) == 'string') {
// name of function
window[func](this, args);
}
} // foreach event handler defined
} // user defined handler for event
}
};

html代码:
复制代码 代码如下:

a.htm


Zero Clipboard Test




Copy To Clipboard...








flash文件请自己到网上下载哈~
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment afficher l'historique du presse-papiers sur Mac Comment afficher l'historique du presse-papiers sur Mac Sep 14, 2023 pm 12:09 PM

Afficher l'historique du Presse-papiers macOS à partir du Finder Lorsque vous copiez quelque chose sur votre Mac (texte, images, fichiers, URL, etc.), il est transféré dans le Presse-papiers. Voici comment voir ce qui a été copié pour la dernière fois sur votre Mac. Accédez au Finder et cliquez sur "Modifier" dans la barre de menu. Cliquez sur "Afficher le presse-papiers". Cela ouvrira une fenêtre affichant le contenu du presse-papiers macOS. Obtenir l'historique du Presse-papiers contenant plusieurs éléments sur Mac Bien sûr, l'historique natif du Presse-papiers Mac n'est pas l'outil le plus polyvalent que vous puissiez avoir. Il affiche uniquement la dernière chose que vous avez copiée, donc si vous souhaitez copier plusieurs éléments à la fois, puis les coller tous ensemble, vous ne pouvez tout simplement pas le faire. Toutefois, si vous recherchez

Comment résoudre le problème de Windows + Shift + S qui ne fonctionne pas correctement ? Comment résoudre le problème de Windows + Shift + S qui ne fonctionne pas correctement ? May 08, 2023 pm 07:16 PM

Vérifiez votre clavier Si les raccourcis clavier ne fonctionnent pas, il se peut qu'il y ait un problème avec le clavier lui-même. Assurez-vous qu'il est correctement branché et reconnu par votre PC. Un clavier d'ordinateur portable vous pose problème ? Si vous disposez d'un clavier supplémentaire, branchez-le et voyez s'il fonctionne. Si tel est le cas, le problème vient peut-être du clavier lui-même. Vous utilisez un clavier sans fil ? Suivez les instructions du fabricant pour effectuer le réappairage. Vous devez également vérifier si les câbles sont endommagés et vous assurer que les touches sont exemptes de débris et correctement enfoncées. Pour plus d'informations, consultez ces correctifs pour le clavier Windows 11 cassé. Utilisation de la touche d'impression d'écran Si vous avez désespérément besoin d'une capture d'écran et que vous n'avez pas le temps de résoudre le problème, vous pouvez d'abord utiliser la solution de contournement. Pour une photo complète du bureau, cliquez sur

Presse-papiers sur iPhone : Comment y accéder ? Presse-papiers sur iPhone : Comment y accéder ? May 16, 2023 am 10:46 AM

Où est le presse-papiers sur iPhone ? iOS étant un écosystème fermé, le presse-papiers est une fonctionnalité interne stockée dans la mémoire virtuelle. Par défaut, les utilisateurs ne peuvent pas afficher le contenu du presse-papiers ni le modifier de quelque manière que ce soit. Cependant, il existe plusieurs moyens d'accéder au presse-papiers sur iPhone. Vous pouvez coller le presse-papiers dans l'application Notes (ou tout autre éditeur de texte) et y conserver plusieurs copies du presse-papiers, en les modifiant si nécessaire. Vous pouvez également utiliser l'application Raccourcis pour créer un raccourci qui affiche le presse-papiers. Enfin, vous pouvez utiliser une application tierce telle que Coller. Comment accéder au presse-papiers sur iPhone ? Que vous préfériez utiliser l'application Notes intégrée,

Comment résoudre le problème de non-réponse de la fonction copier-coller de Windows 11 ? Comment résoudre le problème de non-réponse de la fonction copier-coller de Windows 11 ? Apr 26, 2023 pm 08:55 PM

La copie a toujours été un excellent moyen de sauvegarder et de partager des fichiers. Il vous permet de créer des sauvegardes manuelles, d'effectuer des transferts simples et même d'apporter des modifications qui pourraient endommager le fichier d'origine s'il n'est pas copié. Cependant, cela peut parfois être difficile si vous rencontrez des problèmes pour utiliser le presse-papiers sur votre PC Windows. Certains utilisateurs de Windows 11 n’ont récemment pas pu utiliser le copier-coller sur leurs systèmes. Ce problème peut survenir pour plusieurs raisons et si vous êtes dans le même bateau, vous pouvez le résoudre sur votre PC. Comment réparer le copier-coller sous Windows 11 Étant donné qu'il existe de nombreux problèmes pouvant entraîner un dysfonctionnement du copier-coller sous Windows, nous avons répertorié ci-dessous les solutions les plus courantes pour résoudre ce problème. Nous vous recommandons de commencer par le premier

Comment utiliser l'historique du presse-papiers sur Windows 11 Comment utiliser l'historique du presse-papiers sur Windows 11 Apr 19, 2023 pm 12:13 PM

<h2>Utilisation de l'historique du Presse-papiers sous Windows 11</h2><p>Vous pouvez toujours utiliser <strong>clic droit>copier</strong> et <strong>clic droit> ou utilisez <strong>Ctrl+C</strong&amp

Captures d'écran et emplacement de la capture d'écran sous Windows 11/10 Captures d'écran et emplacement de la capture d'écran sous Windows 11/10 May 16, 2023 pm 04:01 PM

Où sont les coupures et les captures d’écran dans Windows 11 ? C'est une question que nous posent certains de nos lecteurs qui viennent peut-être d'installer un nouveau système d'exploitation ou d'utiliser un outil de capture pour la première fois. Cet outil est conçu pour capturer tout ou partie de l’écran de votre ordinateur. Pour mettre les choses en contexte, la touche PrintScreen prendra un instantané complet de votre écran, mais le SnippingTool peut être ajusté pour saisir uniquement la zone que vous aimez. Où sont les captures d’écran et les captures d’écran sous Windows 10/11 ? Par défaut, les coupures et les captures d'écran sont enregistrées dans le presse-papiers de votre ordinateur. Cela signifie que pour les récupérer, il vous suffit de les coller dans l'application souhaitée telle que Microsoft Paint, Photo

Nous examinons de plus près l'action recommandée dans Windows 11 et vous montrons comment la désactiver Nous examinons de plus près l'action recommandée dans Windows 11 et vous montrons comment la désactiver Apr 14, 2023 pm 03:10 PM

Microsoft a publié Windows 11InsiderPreviewBuild25115 sur DevChannel. Il introduit une nouvelle fonctionnalité appelée actions suggérées. Microsoft l'a montré avec deux captures d'écran. Regardons de plus près comment cela fonctionne. Comment ouvrir n'importe quelle application et mettre en surbrillance le texte contenant un numéro de téléphone, une date ou une heure dans Windows 11 à l'aide des actions suggérées. Utilisez Ctrl+C ou le menu contextuel pour copier le texte sélectionné dans le presse-papiers. Une info-bulle avec une icône en forme d'éclair devrait apparaître, qui est la barre d'action suggérée. Microsoft le décrit comme une « interface utilisateur légère intégrée ». Cette barre affiche les options qui correspondent au contenu du presse-papiers. Si vous avez copié

Comment copier et coller du texte entre les plateformes Android et Windows Comment copier et coller du texte entre les plateformes Android et Windows Apr 25, 2023 pm 10:43 PM

Copier et coller du texte entre Android et Windows 11 Remarque : Pour cet article, nous utilisons Windows 11, mais le processus est presque le même sous Windows 10. Tout d’abord, vous devez activer la fonction d’historique du presse-papiers si ce n’est pas déjà fait. Vous pouvez l'activer en procédant comme suit : Cliquez sur Démarrer ou appuyez sur la touche Windows pour lancer le menu Démarrer et cliquez sur Paramètres. Lorsque les paramètres s'ouvrent, cliquez sur Système sur la gauche. Faites défiler jusqu'à la liste de droite et sélectionnez l'option Presse-papiers dans le menu. Activez l’option Historique du Presse-papiers. Dans la même section, activez la synchronisation entre appareils et sélectionnez Synchroniser automatiquement le texte que je copie. Installer Microsoft sur Android

See all articles