Heim  >  Artikel  >  Web-Frontend  >  JavaScript implementiert die Kopierfunktion

JavaScript implementiert die Kopierfunktion

高洛峰
高洛峰Original
2016-11-28 11:32:181233Durchsuche

Ignorieren Sie die Kompatibilität des Browsers und prüfen Sie die Unterstützung jedes Browsers für die Kopierfunktion:

1. IE-Browser, es gibt drei Lösungen, der Code lautet wie folgt:

[javascript]

function copy(txtid){

var txtObj = document.getElementById(txtid);

if(window.clipboardData){ // Nur IE unterstützt dies Objekt, Firefox und Chrome unterstützen nicht

//1. Kopieren über das ClipboardData-Objekt

//window.clipboardData.clearData();

//window.clipboardData. setData("Text",txtObj.value);

                                                                         txtObj.select();

//document.execCommand("Copy"); // Wird nur von IE unterstützt, Firefox-Berichtssyntax Fehler, Chrome-Ausführungsergebnis gibt false zurück (nicht unterstützt)

//3. Echtzeit-Kopieren über TextRange-Objekt: Sie müssen den Inhalt nicht zuerst auswählen

txtObj.createTextRange().execCommand("Copy");

}

}

function copy(txtid){

var txtObj = document.getElementById(txtid);

if(window.clipboardData) { // Nur IE unterstützt dieses Objekt, Firefox und Chrome unterstützen es nicht

//1. Durch das ClipboardData-Objekt kopieren

//window.clipboardData.clearData();

//window.clipboardData.setData("Text",txtObj.value);

//2. Durch das Dokumentobjekt kopieren: Wählen Sie zuerst den chinesischen Text aus und führen Sie dann den Kopierbefehl aus

//txtObj.select();

//document .execCommand("Copy"); // Wird nur vom IE unterstützt, Firefox meldet einen Syntaxfehler und das Chrome-Ausführungsergebnis gibt false zurück (nicht unterstützt)

//3 über das TextRange-Objekt: Sie müssen nicht zuerst den Inhalt auswählen

txtObj.createTextRange().execCommand("Copy");

}

}

2. Firefox wird über die Schnittstellenmethode implementiert. Aus Sicherheitsgründen schließt Firefox diese Schnittstelle in Versionen nach Version 17. Frühere Versionen sind verfügbar. Der Code lautet wie folgt:

[javascript]

var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interface.nsIClipboard) ;

var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interface.nsIClipboard); Stellt den Benutzern keine Informationen zur Verfügung. Stellt Vorgänge in der Zwischenablage bereit. Es ist ersichtlich, dass die Unterstützung der Kopierfunktion nicht in allen Browsern einheitlich ist.

Zero Clipboard Library

Zero Clipboard js-Bibliothek, geschrieben von jhuckaby, die Flash verwendet, um Inhalte in die Zwischenablage zu kopieren. Solange der Browser mit dem Flash-Plugin ausgestattet ist, kann der Inhalt kopiert werden. ActionScript blockiert die Mängel von JavaScript und löst das Problem der Kopierkompatibilität zwischen Browsern.

Das Implementierungsprinzip von Zero Clipboard: Zero Clipboard generiert zunächst eine Flash-Objektbezeichnung, sodass der transparente Flash über der Schaltfläche „Kopieren“ schweben kann Wird nicht die Schaltfläche, sondern Flash angeklickt, wird der benötigte Inhalt auf diese Weise an Flash übertragen und anschließend über Flash in die Systemzwischenablage kopiert.

So verwenden Sie Zero Clipboard

Hinweis: Da es auf Flash basiert, muss Flash verwendet werden Aus Sicherheitsgründen kann es nur in einem Webcontainer (z. B. Apache, Tomcat) ausgeführt werden. Die Schaltfläche wird nicht geladen, wenn man mit der rechten Maustaste auf die Flash-Einstellungen klickt Fügen Sie ZeroClipboard.swf zu einem vertrauenswürdigen Speicherort hinzu. Es scheint, dass es in Ordnung sein sollte. Es funktioniert immer noch nicht. Möglicherweise liegt ein Problem mit meinem lokalen Browser vor.

1> Laden Sie das komprimierte Paket von Zero Clipboard herunter, entpacken Sie es und legen Sie die beiden Dateien im Ordner ZeroClipboard.js und ZeroClipboard.swf in Ihr Projekt ab

2>Führen Sie die Zero Clipboard.js-Datei und den folgenden Code ein: ;

Hinweis: ZeroClipboard.js und ZeroClipboard.swf müssen im selben Pfad platziert werden. Wenn sie sich nicht im selben Pfad befinden, können Sie sie mit ZeroClipboard.setMoviePath() festlegen.

3> Kopieren Sie einfach den Code wie folgt:

[javascript]

var clip = new ZeroClipboard.Client(); // Ein neues Clip-Objekt erstellen

clip.setHandCursor( true ); / Legen Sie den zu kopierenden Text fest, der der Wert des Textfelds sein kann

clip.glue("copy-botton"); // Registrieren Sie eine Schaltfläche für den Clip. Der Parameter ist die ID des Schaltflächenelements. Klicken Sie auf die Schaltfläche, um das Kopieren zu erreichen

var clip = new ZeroClipboard.Client(); // Ein neues Clip-Objekt erstellen

clip.setHandCursor( true ); // Den zu kopierenden Text festlegen, der möglich ist sei der Wert des Textfelds

clip.glue("copy-botton"); // Registrieren Sie eine Schaltfläche für den Clip, und der Parameter ist die ID des Schaltflächenelements. Klicken Sie auf die Schaltfläche, um sie zu kopieren

4> Häufig verwendete Methoden von Zero Clipboard. Es wird empfohlen, den Quellcode direkt anzuzeigen:

reposition(): verhindert, dass die Flash-Schaltfläche falsch ausgerichtet wird, wenn sich die Seitengröße ändert

hide() : Flash-Schaltfläche ausblenden

show() : Flash-Schaltfläche anzeigen

setCSSEffects (): Lösen Sie das Problem des Stilfehlers der Flash-Okklusionsschaltfläche (ändern Sie :hover in .hover).

5>Keine allgemeinen Ereignisse in der Zwischenablage, die Ereignishandlerfunktion ist addEventListener():

Laden: Flash-Button-Ladeereignis

MouseOver: Ereignis „Mausbewegung nach oben“

MouseOut: Ereignis „Mausbewegung nach oben“

MouseDown: Ereignis „Maus nach unten“

MouseUp: Ereignis „Mausfreigabe“

abgeschlossen: Erfolgsereignis kopieren

jquery.zclip-Bibliothek

Da ZeroClipboard auf nativem JavaScript basiert Implementierung: jquery.zclip verwendet jQuery, um Zero Clipboard zu kapseln. Wenn jQuery bereits im Projekt verwendet wird, wird empfohlen, es kleiner zu verwenden.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn