之前写过一篇文章跨浏览器"复制到剪贴板"的解决方案,里面讲到在Firefox下如果安装了Flash,就可以利用js调用flash的setClipboard方 法来将一段文字写进系统剪切板。但是最近发现,在很多电脑上这种方法已经失灵了。研究了一下,发现是flash10更新了安全策略:新的策略只允许在flash内部调 用setClipboard方法,利用js调用无效;当然,如果在flash里添加事件来执行setClipboard是在允许范围内的。
除了setClipboard的更新外,还有一个比较大的更新就是:FileReference.browse和FileReference.download将只能 通过Flash 内容响应鼠标或键盘的操作来使用。也就是说类似于SWFUpload一类的通过js来打开文件选择框的应用将会无法工作!SWFUpload官方采用 "在SWF中引入一个按钮,用户点击此按钮来触发文件选择对话框的显示"的方案解决的这一问题。
Flash的这次安全升级给我的启示:最好不要用一种语言来做本来不属于他做的事(例如利用window.name跨域传输数据等等),尽管这些Hack在很多情况下 很好用,但也最容易因为某次更新升级而失效。
参考: http://www.jeffothy.com/weblog/clipboard-copy#comment-123736 http://www.v-sky.com/blog/?p=227
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8