Flex 文本控件实现自定义复制粘贴

由于添加了自定义右键菜单,导致Textinput控件默认的右键复制粘贴功能被屏蔽了。最后通过JS脚本实现这个功能,参考代码如下

 

 1 <?xml version="1.0" encoding="utf-8"?>

 2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 

 3                xmlns:s="library://ns.adobe.com/flex/spark" 

 4                xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="init()">

 5     <s:layout>

 6         <s:VerticalLayout/>

 7     </s:layout>

 8     <fx:Declarations>

 9         <!-- 将非可视元素(例如服务、值对象)放在此处 -->

10         <fx:XML id="jsxml" >

11             <script>

12                 <![CDATA[

13                 

14                     function clipboardOperator(type,browsername,txt){

15                         if(type!="init"){

16                             if(type=="copy"){

17                                 window.clipboardData.setData("Text", txt);

18                                 return;

19                             }

20                             else if(type=="paste"){

21                                 var clipboard=window.clipboardData.getData("Text"); 

22                                 if(clipboard == null){

23                                     alert('您的剪切板中没有任何文本内容');

24                                     return ;

25                                 }

26                                 else

27                                     return clipboard;        

28                             }

29                         }

30                     }

31                 ]]>

32             </script>

33         </fx:XML>

34     </fx:Declarations>

35     <fx:Script>

36         <![CDATA[

37             import Class.URLUtil;

38             

39             import flash.external.ExternalInterface;

40             

41             import flash.desktop.Clipboard;

42             import flash.desktop.ClipboardFormats;

43             import mx.controls.Alert;

44             

45             private var browsername:String=URLUtil.getBrowserName();

46             

47             private function init():void{

48                 

49                 lbpaste.text=ExternalInterface.call(jsxml, "init"); 

50             }

51             

52             protected function btncopy_clickHandler(event:MouseEvent):void

53             {

54                 //内部复制功能

55                 Clipboard.generalClipboard.clear();

56                 Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT,txt.text,false);

57                 //调用JS脚本实现复制

58 //                ExternalInterface.call("copypasteOperator","copy", txt.text);

59             } 

60             

61             protected function btnpaste_clickHandler(event:MouseEvent):void

62             {

63                 lbpaste.text=ExternalInterface.call("clipboardOperator","paste",browsername);

64             }

65         ]]>

66     </fx:Script>

67     <s:TextInput id="txt" text="aaa"/>

68     <s:Button id="btncopy" label="复制" click="btncopy_clickHandler(event)"/>

69     <s:Button id="btnpaste" label="粘贴" click="btnpaste_clickHandler(event)"/>

70     <s:Label id="lbpaste"/>

71 </s:Application>

注:目前只支持IE和搜狗浏览器

你可能感兴趣的:(Flex)