123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395 |
- /*
- * zClip :: jQuery ZeroClipboard v1.1.1
- * http://steamdev.com/zclip
- *
- * Copyright 2011, SteamDev
- * Released under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
- *
- * Date: Wed Jun 01, 2011
- */
- (function(a) {
- a.fn.zclip = function(c) {
- if (typeof c == "object" && !c.length) {
- var b = a.extend({
- path : "ZeroClipboard.swf",
- copy : null,
- beforeCopy : null,
- afterCopy : null,
- clickAfter : true,
- setHandCursor : true,
- setCSSEffects : true
- }, c);
- return this
- .each(function() {
- var e = a(this);
- if (e.is(":visible")
- && (typeof b.copy == "string" || a
- .isFunction(b.copy))) {
- ZeroClipboard.setMoviePath(b.path);
- var d = new ZeroClipboard.Client();
- if (a.isFunction(b.copy)) {
- e.bind("zClip_copy", b.copy)
- }
- if (a.isFunction(b.beforeCopy)) {
- e.bind("zClip_beforeCopy", b.beforeCopy)
- }
- if (a.isFunction(b.afterCopy)) {
- e.bind("zClip_afterCopy", b.afterCopy)
- }
- d.setHandCursor(b.setHandCursor);
- d.setCSSEffects(b.setCSSEffects);
- d.addEventListener("mouseOver", function(f) {
- e.trigger("mouseenter")
- });
- d.addEventListener("mouseOut", function(f) {
- e.trigger("mouseleave")
- });
- d.addEventListener("mouseDown", function(f) {
- e.trigger("mousedown");
- if (!a.isFunction(b.copy)) {
- d.setText(b.copy)
- } else {
- d.setText(e.triggerHandler("zClip_copy"))
- }
- if (a.isFunction(b.beforeCopy)) {
- e.trigger("zClip_beforeCopy")
- }
- });
- d.addEventListener("complete", function(f, g) {
- if (a.isFunction(b.afterCopy)) {
- e.trigger("zClip_afterCopy")
- } else {
- if (g.length > 500) {
- g = g.substr(0, 500) + "...\n\n("
- + (g.length - 500)
- + " characters not shown)"
- }
- e.removeClass("hover");
- //alert(g.length);
- tipsUser('内容已经复制到剪切板:\n\n'+ g,'success');
- //alert("Copied text to clipboard:\n\n " + g)
- }
- if (b.clickAfter) {
- e.trigger("click")
- }
- });
- d.glue(e[0], e.parent()[0]);
- a(window).bind("load resize", function() {
- d.reposition()
- })
- }
- })
- } else {
- if (typeof c == "string") {
- return this.each(function() {
- var f = a(this);
- c = c.toLowerCase();
- var e = f.data("zclipId");
- var d = a("#" + e + ".zclip");
- if (c == "remove") {
- d.remove();
- f.removeClass("active hover")
- } else {
- if (c == "hide") {
- d.hide();
- f.removeClass("active hover")
- } else {
- if (c == "show") {
- d.show()
- }
- }
- }
- })
- }
- }
- }
- })(jQuery);
- var ZeroClipboard = {
- version : "1.0.7",
- clients : {},
- moviePath : "ZeroClipboard.swf",
- nextId : 1,
- $ : function(a) {
- if (typeof (a) == "string") {
- a = document.getElementById(a)
- }
- if (!a.addClass) {
- a.hide = function() {
- this.style.display = "none"
- };
- a.show = function() {
- this.style.display = ""
- };
- a.addClass = function(b) {
- this.removeClass(b);
- this.className += " " + b
- };
- a.removeClass = function(d) {
- var e = this.className.split(/\s+/);
- var b = -1;
- for ( var c = 0; c < e.length; c++) {
- if (e[c] == d) {
- b = c;
- c = e.length
- }
- }
- if (b > -1) {
- e.splice(b, 1);
- this.className = e.join(" ")
- }
- return this
- };
- a.hasClass = function(b) {
- return !!this.className.match(new RegExp("\\s*" + b + "\\s*"))
- }
- }
- return a
- },
- setMoviePath : function(a) {
- this.moviePath = a
- },
- dispatch : function(d, b, c) {
- var a = this.clients[d];
- if (a) {
- a.receiveEvent(b, c)
- }
- },
- register : function(b, a) {
- this.clients[b] = a
- },
- getDOMObjectPosition : function(c, a) {
- var b = {
- left : 0,
- top : 0,
- width : c.width ? c.width : c.offsetWidth,
- height : c.height ? c.height : c.offsetHeight
- };
- if (c && (c != a)) {
- b.left += c.offsetLeft;
- b.top += c.offsetTop
- }
- return b
- },
- Client : function(a) {
- this.handlers = {};
- this.id = ZeroClipboard.nextId++;
- this.movieId = "ZeroClipboardMovie_" + this.id;
- ZeroClipboard.register(this.id, this);
- if (a) {
- this.glue(a)
- }
- }
- };
- ZeroClipboard.Client.prototype = {
- id : 0,
- ready : false,
- movie : null,
- clipText : "",
- handCursorEnabled : true,
- cssEffects : true,
- handlers : null,
- glue : function(d, b, e) {
- this.domElement = ZeroClipboard.$(d);
- var f = 99;
- if (this.domElement.style.zIndex) {
- f = parseInt(this.domElement.style.zIndex, 10) + 1
- }
- if (typeof (b) == "string") {
- b = ZeroClipboard.$(b)
- } else {
- if (typeof (b) == "undefined") {
- b = document.getElementsByTagName("body")[0]
- }
- }
- var c = ZeroClipboard.getDOMObjectPosition(this.domElement, b);
- this.div = document.createElement("div");
- this.div.className = "zclip";
- this.div.id = "zclip-" + this.movieId;
- $(this.domElement).data("zclipId", "zclip-" + this.movieId);
- var a = this.div.style;
- a.position = "absolute";
- a.left = "" + c.left + "px";
- a.top = "" + c.top + "px";
- a.width = "" + c.width + "px";
- a.height = "" + c.height + "px";
- a.zIndex = f;
- if (typeof (e) == "object") {
- for (addedStyle in e) {
- a[addedStyle] = e[addedStyle]
- }
- }
- b.appendChild(this.div);
- this.div.innerHTML = this.getHTML(c.width, c.height)
- },
- getHTML : function(d, a) {
- var c = "";
- var b = "id=" + this.id + "&width=" + d + "&height=" + a;
- if (navigator.userAgent.match(/MSIE/)) {
- var e = location.href.match(/^https/i) ? "https://" : "http://";
- c += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'
- + e
- + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'
- + d
- + '" height="'
- + a
- + '" id="'
- + this.movieId
- + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'
- + ZeroClipboard.moviePath
- + '" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'
- + b
- + '"/><param name="wmode" value="transparent"/></object>'
- } else {
- c += '<embed id="'
- + this.movieId
- + '" src="'
- + ZeroClipboard.moviePath
- + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'
- + d
- + '" height="'
- + a
- + '" name="'
- + this.movieId
- + '" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'
- + b + '" wmode="transparent" />'
- }
- return c
- },
- hide : function() {
- if (this.div) {
- this.div.style.left = "-2000px"
- }
- },
- show : function() {
- this.reposition()
- },
- destroy : function() {
- if (this.domElement && this.div) {
- this.hide();
- this.div.innerHTML = "";
- var a = document.getElementsByTagName("body")[0];
- try {
- a.removeChild(this.div)
- } catch (b) {
- }
- this.domElement = null;
- this.div = null
- }
- },
- reposition : function(c) {
- if (c) {
- this.domElement = ZeroClipboard.$(c);
- if (!this.domElement) {
- this.hide()
- }
- }
- if (this.domElement && this.div) {
- var b = ZeroClipboard.getDOMObjectPosition(this.domElement);
- var a = this.div.style;
- a.left = "" + b.left + "px";
- a.top = "" + b.top + "px"
- }
- },
- setText : function(a) {
- this.clipText = a;
- if (this.ready) {
- this.movie.setText(a)
- }
- },
- addEventListener : function(a, b) {
- a = a.toString().toLowerCase().replace(/^on/, "");
- if (!this.handlers[a]) {
- this.handlers[a] = []
- }
- this.handlers[a].push(b)
- },
- setHandCursor : function(a) {
- this.handCursorEnabled = a;
- if (this.ready) {
- this.movie.setHandCursor(a)
- }
- },
- setCSSEffects : function(a) {
- this.cssEffects = !!a
- },
- receiveEvent : function(d, f) {
- d = d.toString().toLowerCase().replace(/^on/, "");
- switch (d) {
- case "load":
- this.movie = document.getElementById(this.movieId);
- if (!this.movie) {
- var c = this;
- setTimeout(function() {
- c.receiveEvent("load", null)
- }, 1);
- return
- }
- if (!this.ready && navigator.userAgent.match(/Firefox/)
- && navigator.userAgent.match(/Windows/)) {
- var c = this;
- setTimeout(function() {
- c.receiveEvent("load", null)
- }, 100);
- this.ready = true;
- return
- }
- this.ready = true;
- try {
- this.movie.setText(this.clipText)
- } catch (h) {
- }
- try {
- this.movie.setHandCursor(this.handCursorEnabled)
- } catch (h) {
- }
- 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
- }
- if (this.handlers[d]) {
- for ( var b = 0, a = this.handlers[d].length; b < a; b++) {
- var g = this.handlers[d][b];
- if (typeof (g) == "function") {
- g(this, f)
- } else {
- if ((typeof (g) == "object") && (g.length == 2)) {
- g[0][g[1]](this, f)
- } else {
- if (typeof (g) == "string") {
- window[g](this, f)
- }
- }
- }
- }
- }
- }
- };
|