自己写的,利用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 设置系统剪贴板,可跨多浏览器。
分享到:
相关推荐
本篇将详细讲解如何利用AS3(ActionScript 3.0)实现一个图文混排组件,以及该组件的一些关键特性。 首先,我们要理解什么是“图文混排”。图文混排是指在一个容器中同时展示文本和图像,它们可以按照特定的布局...
AS1000G2的数据快照功能基于即写即拷贝(copy-on-write)技术,它能在瞬间创建卷的时间点映像,而无需中断应用程序的正常运行。这一特性使得快照创建过程对用户透明,且操作简便。每个卷最多可支持4个快照,系统总共...
通过上述介绍,我们不仅了解了如何利用Python的`os`模块来实现文件及文件夹的复制功能,还学习了如何使用`os.path.isdir()`、`os.path.isfile()`、`os.listdir()`、`os.mkdir()`等函数。此外,我们还提供了一个完整...
这个“FLASH AS3.0 WINDOWS 菜单”项目可能包含了实现这一功能的所有必要元素。 首先,`menubar.fla`是Flash的源文件,它包含项目的图形元素、动画和ActionScript代码。在Flash环境中,.fla文件是编辑和设计交互式...
通过API,开发者可以利用预先编写好的功能代码,无需了解底层实现细节就能完成特定的任务。本文将探讨如何在Visual Basic环境下通过调用外部程序函数来实现API函数的高级功能,主要关注于如何利用Shell函数来执行...
总的来说,VB Copy Screen是一个学习VB编程和图形处理的好例子,它涵盖了GDI+的基本用法,以及如何结合用户界面实现交互式功能。对于想要了解或扩展屏幕截图功能的开发者来说,这是一个有价值的参考资料。
下面将详细介绍如何利用VBA代码来实现这一操作。 首先,理解VBA的基本结构至关重要。VBA是一种基于Visual Basic的编程语言,它允许用户创建宏或者自定义函数来扩展Excel的功能。在VBA环境中,我们需要编写一段代码...
为了实现向上和向下查找功能,我们需要利用TextBox的SelectionStart和Text属性,结合循环和字符串操作来定位和高亮显示匹配的文本。 3. **查找与替换** 在菜单栏中添加“查找”(Find)和“替换”(Replace)菜单...
在本文中,我们将深入探讨如何利用PHP实现这样的功能,以及涉及的相关知识点。 首先,我们需要了解PHP的`copy()`函数。这个函数用于将一个文件从源路径复制到目标路径。基本语法是: ```php bool copy(string $...
在C#编程环境中,利用ffmpeg库来实现实时USB摄像头预览并同步推流是一项技术挑战,但也是可能实现的功能。以下将详细讲解如何通过ffmpeg的`image2pipe`参数来达成这一目标。 首先,我们需要了解`ffmpeg`。FFmpeg是...
尽管它的核心是C语言实现的,但是它提供了Python接口,使得开发者可以方便地在Python应用程序中集成这个功能。通过Python,你可以轻松地构造数据源,调用`pgcopy`进行数据导入,同时利用Python的灵活性处理导入前后...
本篇文章主要讲解如何利用PowerDesigner 15进行特定的操作,即如何将Comment字段中的字符复制到Name字段中,这在数据库对象命名规范化的场景下非常有用。 首先,我们需要了解PowerDesigner 15的工作界面和基本功能...
通过理解`SHFileOperation`函数的工作原理和使用方法,开发者可以方便地在自己的应用程序中实现与Windows资源管理器类似的功能,为用户提供更加原生的操作体验。同时,掌握这种底层API的调用,也能帮助开发者更好地...
为了实现内存拷贝功能,需要编写一个VC的动态链接库(DLL),其中包含两个函数`copy_BA`和`copy_AB`,用于实现内存拷贝的功能。 ```cpp // copymem.cpp #include #include extern "C" __declspec(dllexport) ...
要实现这一功能,我们首先需要读取Excel文件,这里可以使用pandas库的`read_excel()`函数。然后遍历数据框的第一列(假设是列名'Column1'),利用os库的`os.makedirs()`函数创建对应路径的文件夹。示例代码如下: `...
总的来说,VB利用Shell功能调用SQL的BCP是实现数据库批量导入导出的有效方式,能够提高数据处理的效率和灵活性。在进行此类操作时,要确保对BCP命令和VB编程有深入的理解,同时考虑安全性、性能优化以及错误处理等...
这个"Excel-VBA实用技巧范例-利用VBA标准功能操作文件.zip"压缩包文件显然包含了关于如何使用VBA进行文件操作的实例和教程。以下是通过VBA在Excel中操作文件的一些关键知识点: 1. **打开和关闭文件**:VBA提供了`...
- **剪切、复制与粘贴**:利用文本框的`Cut`、`Copy`和`Paste`方法来实现。 - **查找与替换**:可以编写专门的方法来搜索文本,并提供替换选项。 ### 三、代码示例 #### 1. **保存文档** ```vb Private Sub ...
正确地利用这些事件,可以帮助开发者构建出更加友好且功能丰富的用户界面。值得注意的是,在实际应用中,还需要考虑其他可能影响用户体验的因素,比如性能优化、错误处理等。通过深入学习这些基本概念和技术细节,...
- 复制 (`Copy`):实现复制功能。 - 粘贴 (`Paste`):实现粘贴功能。 - **帮助菜单**:未实现。 #### 三、代码解析 ##### 3.1 构造函数 ```java public MyNote() { JMenuBar bar = new JMenuBar(); this....