zoukankan      html  css  js  c++  java
  • Flash剪贴板功能

     做JS的都知道,如果不考虑浏览器的兼容问题,其实,JS本身的window.clipboardData对象是可以做到复制内容到剪贴板的功能,但除了IE浏览器,FF和Chrome浏览器都不支持。现在为了浏览器的兼容问题,只能使用Flash来做这功能了。

           Flash Player在10.0之前的版本,如果要实现将内容复制到系统剪贴板:
                       System.setClipboard("内容")
           这样一句简单的代码就可以。但从Flash Player10.0之后,引入了不少新的安全特性,对于跨域的敏感操作都需要用户的参与。只有当用户触发点击或按键才能调用剪贴板复制功能等,所以以前的这种做法,由JS调用SWF的一个函数的做法已经失效了。
           其实,要解决新的特性带来的麻烦问题,现在网上有很多的文章都已经说到如何解决。但都是一个道理,就是flash中放一个让用户能够点击到的显示对象,这个根据不同的需求,有的是做一个flash button或sprite绘制一个透明的显示对象放置在某个要触发复制的地方,在这里不多说这种解决方案。有兴趣的可以直接百度ZeroClipboard。
          这里要说到flash player10.0之后新增的Clipboard类,该类位于flash.desktop包下。Clipboard类提供一个容器,用于通过剪贴板传输数据和对象。通过静态generalClipboard属性可以访问操作系统剪贴板,该类不但可以做到设置系统剪贴板,还可以清除和获取剪贴板内容,而且在设置内容时,可以指定数据格式。
          Clipboard. generalClipboard.setData(ClipboardFormats.TEXT_FORMAT,string);  向系统剪贴板添加文本内容
          Clipboard. generalClipboard.clearData(ClipboardFormats.TEXT_FORMAT)   删除指定的文本数据;
          Clipboard. generalClipboard.getData(ClipboardFormats.TEXT_FORMAT)  获取指定的文本数据;
          但Clipboard类的使用也需要用户的参与,setData与clearData方法的调用,可以像上面说到的,在flash 中绘制一个透明的显示对象,放置在触发的位置让用户点击,当触发Click事件后做相应的处理;getData则不同了,Clipboard.generalClipboard对象只能在处理flash.events.Event.PASTE事件时读取。
  • 相关阅读:
    CI框架用cookie实现用户自动登录
    php预定义常量
    ubuntu root密码
    jQuery的form中ajaxSubmit参数
    优酷视屏播放去广告链接id_XXX.html内容替换红色
    linux 重启apache:apachectl -k graceful
    python深copy与浅copy的区别
    python3中pathlib库的Path类方法汇总
    unittest使用discover加载不同目录下的case失败,提示Path must be within the project
    自定义HTMLTestRunner报告case名称
  • 原文地址:https://www.cnblogs.com/jiahuafu/p/3252749.html
Copyright © 2011-2022 走看看