Home  >  Article  >  Web Front-end  >  JavaScript implements copy function

JavaScript implements copy function

高洛峰
高洛峰Original
2016-11-28 11:32:181203browse

Ignore the compatibility of the browser and look at the support of each browser for the copy function:

1. IE browser, there are three solutions, the code is as follows:

[javascript]

function copy(txtid) {

var txtObj = document.getElementById(txtid);

if(window.clipboardData){ // Only IE supports this object, firefox and chrome do not support it

// 1. Copy through the clipboardData object

// window.clipboardData.clearData();

                                                                                                                                                                                              B //txtObj.Select ();

//document.execcommand 18); // Only IE supports, firefox reports grammatical errors, chrome execution results return false (not support)

// 3 The current copy is implemented through the textRange object: you don't need to select the content first

txtObj.createtextRange (). Execocommand ("Copy"); .getElementById(txtid);

if(window.clipboardData){ // Only IE supports this object, firefox and chrome do not support it

//1. Copy through clipboardData object

//window.clipboardData.clearData() ;

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

//2. Copy through the document object: first select the Chinese text, and then execute the copy command

//txtObj.select ();

//document.execCommand("Copy"); // Only supported by IE, Firefox reports a syntax error, and the chrome execution result returns false (not supported)

//3. Realize current copy through TextRange object : You don’t need to select the content first

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

}

}

2. Firefox, implemented through the interface method, Firefox is for security reasons, in 17 Later versions will close this interface, and it will be available in versions 17 and earlier. The code is as follows:

[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); 3. Chrome does not provide users with clipboard operations due to security reasons. It can be seen that the support for the copy function is not uniform across browsers.

Zero Clipboard Library

Zero Clipboard js library written by jhuckaby, which uses Flash to copy content to the clipboard. As long as the browser is equipped with the Flash plug-in, the content can be copied. ActionScript is used to shield the shortcomings of JavaScript and solve the problem of copy compatibility between browsers.

The implementation principle of Zero Clipboard: Zero Clipboard first generates a Flash object label, allowing the transparent Flash to float on the copy button. In fact, what is clicked is not the button but the Flash. In this way, the required content is transferred to Flash, and then Copy to system clipboard via Flash.

How to use Zero Clipboard

Note: Because it is based on Flash implementation, Flash needs to be run in a Web container (such as Apache, Tomcat) for security reasons. Opening Flash directly will not be loaded. , the button is similar to the phenomenon of suspended animation. It is said on the Internet that right-clicking Flash settings will add ZeroClipboard.swf to a trusted location. It seems that it should work. I tried it, but it still doesn't work. It may also be a problem with my local browser.

1> Download the compressed package of Zero Clipboard, unzip it and put the two files in the folder: ZeroClipboard.js and ZeroClipboard.swf into your project;

2> Introduce the Zero Clipboard.js file , the following code: ;

Note: ZeroClipboard.js and ZeroClipboard.swf need to be placed in the same path. If If they are not in the same path, you can use ZeroClipboard.setMoviePath() to set it.

3>Simple copy the code as follows:

[javascript]

var clip = new ZeroClipboard.Client(); // Create a new clip object

clip.setHandCursor( true ); // Settings The mouse is a hand type

clip.setText("hello,world");                                                               use using using ’                       ’ s ’ s ’ s ’     ‐ ‐ ‐ ‐ ‐ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​ ​Button, the parameter is the id of the button element, you can copy it by clicking the button

var clip = new ZeroClipboard.Client(); //Create a new clip object

clip.setHandCursor(true); The copied text can be the value of the text box

clip.glue("copy-botton"); // Register a button for clip, the parameter is the id of the button element, click the button to copy

4>Zero Clipboard Commonly used methods, it is recommended to view the source code directly:

reposition(): to prevent the Flash button from being misaligned when the page size changes

hide(): hide the Flash button

show(): display Flash button

setCSSEffects(): Solve the problem of Flash occlusion button style failure (change :hover to .hover).

5>Zero Clipboard common events, the event handler function is addEventListener():

load: Flash button loading event

mouseOver: mouse move up event

mouseOut: mouse move out event

mouseDown : mouse Press event

mouseUp: mouse release event

complete: copy success event

jquery.zclip library

Since ZeroClipboard is based on native JavaScript, jquery.zclip uses jQuery to implement Zero Clip board For encapsulation, if jQuery is already used in the project, it is recommended to use it, jquery.zclip is smaller in size.

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn