?
自己写的,利用as3 实现 copy 功能
js 脚本:
?
var HushuilongClipboard = { index: 0, current_flash_id: '', clipboardText: {}, completeCallback: {}, init: function(flash_place_id, button_img, button_width, button_height){ var flash_id = 'HushuilongClipboard_' + (this.index++); this.current_flash_id = flash_id; var flashvars = {id:flash_id, button_img: button_img}; var params = { swliveconnect:"true",wmode:"transparent"}; var attributes = { id:flash_id, name:flash_id }; var flash_width = parseInt(button_width,10) + 2; var flash_height = parseInt(button_height,10); //swfobject.embedSWF("/HushuilongClipboard/HushuilongClipboard.swf?cachetime="+new Date().getTime(), flash_place_id, flash_width, flash_height, "9.0.45.0", "expressInstall.swf", flashvars, params, attributes); swfobject.embedSWF("/HushuilongClipboard/HushuilongClipboard.swf", flash_place_id, flash_width, flash_height, "9.0.45.0", "expressInstall.swf", flashvars, params, attributes); return this; }, setText: function(str,completeCallback){ var flash_id = this.current_flash_id; this.clipboardText[flash_id] = str; this.completeCallback[flash_id] = typeof completeCallback == 'function' ? completeCallback : function(){}; return this; }, thisMovie: function(movieName){ return navigator.appName.indexOf("Microsoft") != -1 ? window[movieName] : document[movieName]; }, flashClickCallback: function(flash_id){ if( ! this.clipboardText[flash_id]) return ; var text = this.clipboardText[flash_id]; var res = this.thisMovie(flash_id).jsCallflashToSetClipboard(text); this.completeCallback[flash_id](res); } };
?
as3 脚本:
package { import flash.display.Stage; import flash.display.StageScaleMode; import flash.display.StageAlign; import flash.net.URLRequest; import flash.net.URLLoader; import flash.events.*; import flash.display.Loader; import flash.display.LoaderInfo; import flash.utils.ByteArray; import flash.display.Sprite; import flash.display.Bitmap; import flash.external.ExternalInterface; import flash.system.System; import flash.system.Security; public class HushuilongClipboard extends Sprite { private var buttonContainer:Sprite; public function HushuilongClipboard() { flash.system.Security.allowDomain("*"); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; buttonContainer = new Sprite(); buttonContainer.buttonMode = true; buttonContainer.useHandCursor = true; addChild(buttonContainer); load_button_img(); buttonContainer.addEventListener(MouseEvent.CLICK, function(event:Event):void{ ExternalInterface.call("HushuilongClipboard.flashClickCallback",ExternalInterface.objectID); }); ExternalInterface.addCallback("jsCallflashToSetClipboard", setClipboard); } public function load_button_img(){ try{ var buttonImg:String = LoaderInfo( this.root.loaderInfo ).parameters.button_img; var loader:Loader = new Loader(); loader.load( new URLRequest(buttonImg) ); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(evt:Event){ var image:Bitmap = Bitmap(loader.content); buttonContainer.addChild(image); }); }catch(error:Error){ } } public function setClipboard(str) { try{ System.setClipboard(str); return true; }catch(error:Error){ return false; } } } }
?
?
原理:
???? flash 加载图片按钮,点击按钮触发事件调用JS ,在Js 设置要复制的字符串, 再把设置好的字符串传给 as3
??? ,???? 利用 as3 中的 system.setClipboard 设置系统剪贴板,可跨多浏览器。
?
?