`

javascript可以轻松操作客户端剪贴板内容

阅读更多
写道
<html>
<head>
<script type="text/javascript">
<script language="javascript">
//IE、Firefox下Clipboard的读写js脚本
/**************************************************
将字符串maintext复制到剪贴板
**************************************************/
function setClipboard(maintext) {
if (window.clipboardData) {
return (window.clipboardData.setData("Text", maintext));
}
else if (window.netscape) {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;
trans.addDataFlavor('text/unicode');
var str = new Object();
var len = new Object();
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
var copytext=maintext;
str.data=copytext;
trans.setTransferData("text/unicode",str,copytext.length*2);
var clipid=Components.interfaces.nsIClipboard;
if (!clip) return false;
clip.setData(trans,null,clipid.kGlobalClipboard);
return true;
}
return false;
}
/**************************************************
返回剪贴板的内容
**************************************************/
function getClipboard() {
if (window.clipboardData) {
return(window.clipboardData.getData('Text'));
}
else if (window.netscape) {
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if (!clip) return;
var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
if (!trans) return;
trans.addDataFlavor('text/unicode');
clip.getData(trans,clip.kGlobalClipboard);
var str = new Object();
var len = new Object();
try {
trans.getTransferData('text/unicode',str,len);
}
catch(error) {
return null;
}
if (str) {
if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
else str = null;
}
if (str) {
return(str.data.substring(0,len.value / 2));
}
}
return null;
}
</script>
</script>
</head>
<body onmouseup="test()">
<span class="red b" id="PageBreak">[--page--]</span><br />

<input type="button" value="复制代码" onClick='javascript:if(setClipboard(document.getElementById("PageBreak").innerHTML)) {alert("已复制到剪切板,请在文章内容分页处粘贴")};' class="button" />
<br><br>
</body>
</html>

写道
下面都是我的猜测,ff的鼠标捕获相当于能自动设置和释放的document.body.setCapture(false)。
因为我测试下面的程序,发现ie和ff效果是差不多的:
ie:

<html>
<body>
<div id="aa" onmouseover="alert(1)"> </div>
<script>
document.body.onmousedown=function(){this.setCapture(false)}
document.body.onmouseup=function(){this.releaseCapture()}
document.onmousemove=function(){aa.innerHTML+=1}
</script>
</body>
</html>

ff:

<html>
<body>
<div id="aa" onmouseover="alert(1)"> </div>
<script>
document.onmousemove=function(){aa.innerHTML+=1}
</script>
</body>
</html>
  • ie:  document.selection.empty()
  • ff:  window.getSelection().removeAllRanges()

为了防止在拖放过程中选择内容,所以把它放到Move程序中,下面是兼容的写法:

window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();

 
分享到:
评论

相关推荐

    JavaScript操作剪贴板

    JavaScript操作剪贴板 javascript可以轻松操作客户端剪贴板内容,不过只适用IE5以上浏览器

    代码详解JS操作剪贴板

    javascript可以轻松操作客户端剪贴板内容,不过只适用IE5以上浏览器。 javascript可以使用window.clipboardData对象处理剪贴板内容。 保存到剪贴板的方法setData(param1, param2)。 param1 :数据类型 text 或 URL...

    IE下通过JS控制剪贴板的代码

    javascript可以轻松操作客户端剪贴板内容,不过只适用IE5以上浏览器

    dhtmlxGridk 中文文档

    dhtmlxGrid支持强大的功能,如必要的基于Web的电子表格、合并单元格、拆分模式、网格列拖动和拖放或脚本方法和数据复制到剪贴板(CSV格式) 。AJAX DataGrid的可扩展架构允许您使用自定义单元格编辑器(每一个细胞的...

    osn-hax:对 Oracle 社交网络 Web 客户端界面的基于浏览器的扩展

    内联添加可调整大小的编辑器(测试版) 调整墙上的描述,这样你就可以看到冗长的文本而无需滚动和其他各种样式技巧提供一种简单的方法来上传图像,或从系统剪贴板粘贴它们,并将它们包含在帖子中添加为对话(以及...

    Zoom Utils-crx插件

    更改日志版本2.2,在Web客户端选项中打开计划修订版本2.2.1,通知修订版本2.1,支持我们的链接:)将会议链接复制到剪贴板版本2.0修改后的设计通知(自动加入,单击以加入,提醒)从添加缩放会议页面改进的添加/删除和...

    minionsipsum

    Minionsipsum桌面客户端在桌面上添加一个小托盘图标,您可以在其中将小黄人ipsum数据拉到剪贴板。 连接到来获取数据。 感谢Carlos AlbertoHernández( ),以便首先创建该有趣的服务。下载您可以从以下位置下载...

    Warehouse:快速简便的FTP上传应用

    #仓库 ###它是什么?... 任务栏菜单中有一个选项,可在上传完成后自动将公共链接复制到文件到剪贴板,以便您轻松共享文件。 您可以让应用程序在后台运行,这样就不必每次都重新打开它。 任务栏菜

    Tcl_TK编程权威指南pdf

    第35章 选择和剪贴板 选择模型 selection命令 clipboard命令 选择处理程序 第36章 焦点、焦点的捕获和对话框 标准对话框 定制对话框 使用update命令实现动画 第37章 tk组件的属性 配置属性 尺寸 边界与...

    peridot:节点+React静态站点生成器

    它的目标是使您可以轻松地从各种媒体(从照片到推文)制作“数字剪贴簿”。 这与总体目标相去甚远,但具有足够的可塑性,您仍然可以使用它来构建一个非常酷的网站。 Peridot网站不是使用传统的基于模板的静态网站...

Global site tag (gtag.js) - Google Analytics