`

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...

    兼容各浏览器的复制到剪贴板功能

    在早期,由于浏览器之间的差异和安全限制,JavaScript直接操作剪贴板的功能并不一致。例如,Internet Explorer支持ActiveX对象,可以通过`document.execCommand('copy')`来实现复制功能,但其他如Firefox、Chrome等...

    BlazorClipboard:Blazor的剪贴板API

    BlazorClipboard库弥补了这一不足,通过封装浏览器的剪贴板接口,为Blazor开发者提供了一种简单易用的方式来操作剪贴板内容。 使用BlazorClipboard API,开发者可以实现以下功能: 1. **复制文本**:通过调用提供的...

    JavaScript 无需flash内容复制 Clipboard.js v2.0.4.zip

    Clipboard.js就是这样一个现代的、轻量级的库,用于在JavaScript环境中方便地实现剪贴板操作。 Clipboard.js v2.0.4是一个专注于剪贴板复制功能的库,它的出现解决了在没有Flash的情况下复制内容的问题。这个库设计...

    Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)

    3. 设置剪贴板客户端的手形光标,使用户看起来可以进行拖动操作。 4. 设置要复制的文本,这里是通过`$("#txtInvite_"+id).val()`获取关联输入框的值。 5. 添加事件监听器,当复制操作完成时,会触发回调函数。在这个...

    jQuerySyntax是一个JavaScript客户端语法高亮显示

    4. **插件系统**:除了基本的代码高亮功能外,jQuery Syntax 还可能包含一系列插件,以扩展其功能,如代码折叠、行号显示、复制到剪贴板等,以满足更复杂的需求。 **使用步骤** 1. **引入 jQuery 和 jQuery.Syntax...

    ZeroClipboard

    ZeroClipboard的工作原理基于Adobe Flash Player,因为JavaScript在浏览器的安全策略下无法直接操作剪贴板内容。ZeroClipboard会创建一个透明的Flash对象,覆盖在网页上需要复制的按钮之上,当用户点击该按钮时,...

    passprotectjs一个简单的JavaScript库可帮助您保护用户的密码

    它会监听剪贴板事件,并在必要时阻止敏感数据的复制、剪切和粘贴操作。 3. **安全的密码验证** - 提供了一些基础的密码强度检查规则,例如最小长度、数字和特殊字符的混合等,帮助用户创建更强大的密码。 4. **...

    最新EditPlus

    EditPlus的剪贴板历史记录功能可以保存用户的剪贴板操作,允许用户随时回溯并粘贴之前复制的内容。 **6. 正则表达式搜索与替换** 在查找和替换功能中,EditPlus支持正则表达式,这对于处理大量文本数据或进行复杂的...

    jquery。validate、拼音码生成和clipboard.zip

    使用jQuery Validate,你可以减少服务器端的负载,因为大部分验证可以在客户端完成,提高用户体验。它还有多种自定义错误消息和错误显示方式,使得表单验证既高效又易于定制。 其次,拼音码生成通常涉及到中文字符...

    前端项目-datatables-tabletools.zip

    这些按钮可以执行各种操作,如复制表格到剪贴板、打印表格、导出数据到CSV、Excel或PDF等。这极大地提高了用户在处理大量数据时的效率和便利性。 **Tabletools的主要特性** 1. **复制到剪贴板**:允许用户将表格...

    c#注册客户端事件示例

    `DisablePaste` 方法用于阻止用户在Web控件中进行剪贴板粘贴操作。同样,它检查控件是否非空,然后添加一个 `onpaste` 事件处理程序,该处理程序返回 `false`,从而阻止默认的粘贴行为。 这些示例展示的技巧在实际...

    代码运行 复制代码 下载

    例如,可以创建一个按钮,当用户点击时,JavaScript会选择并复制特定的代码段到剪贴板。这可能涉及到DOM操作,选取代码元素,然后利用`document.execCommand('copy')`来复制选定的内容。 最后,我们讨论“下载”。...

    PSPad编辑器

    10. **剪贴板管理**:编辑器提供了剪贴板历史记录,可以存储和重复使用多次复制的内容,避免了反复在剪贴板和编辑器之间切换。 11. **界面定制**:用户可以根据个人喜好调整界面布局,包括字体、颜色主题等,打造...

    EditPlus代码编辑工具

    13. **剪贴板历史记录**:EditPlus保留了剪贴板的历史记录,可以随时回溯并粘贴以前复制过的文本。 总之,EditPlus作为一款优秀的代码编辑工具,以其全面的功能、高效的性能和高度可定制性赢得了广大开发者的好评。...

    Edit Plus

    该编辑器具有剪贴板堆栈功能,可以存储和回溯多个复制/剪切的操作,方便在不同的文本片段间切换。 **7. 自定义快捷键** EditPlus允许用户自定义快捷键,可以根据个人习惯设定,提高操作速度。 **8. 行号和列选择**...

    editplus文档编辑器

    它支持剪贴板历史记录,可以保存多次复制的文本,方便随时粘贴。 总之,EditPlus作为一个全能的文本编辑器,不仅适合编写普通文档,更是程序员的得力助手。通过其丰富的特性,它可以大大提高代码编写、调试和管理...

    Clipster-开源

    这意味着用户可以在不同的设备之间无缝地传输和共享剪贴板内容,无论他们使用的是Windows、MacOS还是Linux操作系统。这种跨平台的设计是通过利用各种编程语言和框架实现的,例如Python、JavaScript或Qt,这些工具...

Global site tag (gtag.js) - Google Analytics