Flash 2176错误

出于安全性考虑,Flash player和AIR运行时可能遇到这样的错误:Error #2176: 某些动作(如显示弹出窗口的动作)只能通过用户交互来调用,例如,单击鼠标或按下按钮。当我们试图在Flash网页中直接使用一些非用户交互事件、异步回调来弹出上传下载文件窗口、将文本复制到系统剪贴板,就会出现上述错误。

具体拿复制文本到系统剪贴板来说,大家都知道可以使用System.setClipboard()和Clipboard.setData()两种方法来复制文本到系统剪贴板。前者专门是为Flash Player 9中运行的SWF内容提供的,在AIR应用程序中并不能调用该方法。后者适用于Flash Player 10以上的版本及AIR应用程序。但在非安全沙箱中的内容(如网页)中调用这两个方法都会导致2176错误。

最好的解决方案是直接通过用户交互来操作这些行为,如果无法避免要在非用户交互事件或回调来完成,可以在操作前弹出对话框让用户确认。甚至可以考虑用ExternalInterface.call()来完成相关操作,不过这会遇到浏览器兼容的问题。

发表评论