Flash 拷贝字符串到剪贴板
JS无法做到访问DOM之外的内容,也就无法做到拷贝字符串到系统剪贴板,这时候只能用Flash去实现,个人感觉别无他法。
Flash操作系统剪贴板,知识点有两处。
1 » System.setClipboard(str) 拷贝字符串到系统剪贴板
2 » ExternalInterface.call(func, param...) AS调用JS函数
下面是Flex代码
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="16" minHeight="16">
<fx:Script>
<![CDATA[
public function copyToClipboard():void {
var text:String = ExternalInterface.call('Copy.clipBoard');
var status:Boolean = false;
if (text) {
System.setClipboard(text);
status = true;
}
ExternalInterface.call('Copy.callback', status ? text : false);
}
]]>
</fx:Script>
<mx:Image id="copy" source="@Embed('../asserts/copy.gif')"
click="copyToClipboard()" useHandCursor="true" buttonMode="true" />
</s:Application>
水平有限,只能做到这个程度。编译处理的swf文件名字为clipboard.swf。在下面的HTML中调用。
<div class="row">
<input id="clippy" type="text" />
<object width="16" align="middle" height="16"
id="clipboard" name="clipboard"
type="application/x-shockwave-flash" data="clipboard.swf">
<param name="quality" value="high">
<param name="bgcolor" value="#ffffff">
<param name="allowscriptaccess" value="sameDomain">
<param name="allowfullscreen" value="true">
</object>
</div>
<script>
var Copy = {};
Copy['clipBoard'] = function() {
return document.getElementById('clippy').value;
}
Copy['callback'] = function(status) {
alert(!!status ? status : 'Wrong');
}
</script>
到此为止,未有复杂的东西,解释似乎多余。
现在还没有评论
留下您的大名