使用按钮粘贴剪贴板中的文本

时间:2009-12-01 18:39:32

标签: flex clipboard paste

我有控制栏按钮复制,剪切和粘贴,他们想要从剪贴板复制/粘贴一些文本/对象。

复制/剪切工作正常。 使用CTRL + V粘贴和上下文菜单也可以正常工作。

但是当我试图通过控制栏按钮点击处理程序访问剪贴板时,它会抛出错误

SecurityError: Error #2179: The Clipboard.generalClipboard object may only be read while processing a flash.events.Event.PASTE event.
at flash.desktop::Clipboard/getObjectReference()
at flash.desktop::Clipboard/convertNativeFormat()
at flash.desktop::Clipboard/getOriginal()
at flash.desktop::Clipboard/getData()
... 2 more

我知道这是安全问题。

  

方法   Clipboard.generalClipboard.getData()   可用于阅读内容   系统剪贴板,但只有当它   从事件处理程序中调用   处理flash.events.Event.PASTE   事件

但是我必须实现粘贴控制栏按钮。我这样做了吗?

4 个答案:

答案 0 :(得分:2)

要克服Flash Player强加的安全限制,您可以使用Flash Local共享对象模拟系统剪贴板的功能,例如在http://joeberkovitz.com/blog/2008/12/12/clipboard-using-local-shared-objects/中首次使用它,或者通过ExternalInterface使用Javascript API从剪贴板中检索数据

答案 1 :(得分:1)

我唯一能找到的就是能够使用自定义上下文菜单进行粘贴。你可以找到一个example on how to do that here。我自己尝试调度“粘贴”事件,玩家似乎以某种方式检测到粘贴来自上下文菜单或键盘 - 不完全确定它是如何做到的或为什么会这样。我希望其他人可以提供更多的澄清,但与此同时,上下文菜单会有效吗?

更新:我认为没有办法强制粘贴事件。我一直在运行一些测试,这似乎是让这个事件分派并允许调用Clipboard.generalClipboard.setContents方法而没有安全错误的唯一方法是响应全局粘贴事件,只能调度“安全地“从上下文菜单或键盘事件(ctrl + V或平台等效。)抱歉。

答案 2 :(得分:0)

在其他编程环境中,我发现从按钮触发剪贴板粘贴操作不起作用,因为在粘贴操作发生之前,按钮本身会远离目标编辑控件获得焦点。这可能是这种情况吗?

答案 3 :(得分:-1)

为了避免异常安全性,事件的目标必须是应用程序的阶段对象。我没有在任何文档中找到这些信息,这是我自己的经验。希望它有效。