兼容性:
获取剪贴板数据这块各个浏览器间存在很大的兼容性问题:
ie:
通过监听 paster 或 beforepaste ,在全局变量 clipboardData
中取得黏贴数据:
onpaste=function(){
alert(clipboardData.getData("Text"););
}
但局限性在于只能取得文本数据而不能取得富文本html.
firefox:
ff 提供了丰富的 api
接口,但需要用户提升权限
这一条就使得 ff 的 api形同虚设。
chrome:
支持 w3 clipboard api
(借鉴 ie,不过 clipboardData 和事件关联),可以随意取得 html/text 格式的剪贴板内容,十分方便:
onpaste=function(e){
e.clipboardData.getData("text/html"); // html 格式
e.clipboardData.getData("text/plain");// 纯文本格式
}
换个思路自己实现
其实可以完全绕开浏览器的剪贴板相关 api,经过一些 trick,可以取得用户的粘贴信息,主要关注以下事件:
beforepaste
: ie only. 在黏贴的数据放到页面前触发,返回 false 则允许右键菜单有黏贴选项。
paste :
ie
: 黏贴的数据放到页面后触发。
firefox/chrome
: 黏贴的数据放到页面前触发。
主要实现思路为在将数据黏贴到 a 输入区域前,将焦点定位到隐藏的b输入区域,使得用户数据被黏贴在 b 区域,然后从 b 区域中取出处理后再填入 a 区域,并恢复焦点到 a 区域:
$("#a").on(ie?"beforepaste":"paste",function(e){
$("#b").text("");
$("#b")[0].focus();
setTimeout(function(){
$("#a").text($("#b").text().replace(/[^\d]+/,""));
$("#a")[0].focus();
},0);
});
});
这样就可以间接得取得剪贴板数据进行处理。
不过很有必要进行一些复杂的其它处理 ( 待续
):对 a 进行选择区域位置的保存与恢复以及替换被黏贴的部分内容.
event paste demo @ google code
refer
http://stackoverflow.com/questions/2176861/javascript-get-clipboard-data-on-paste-event-cross-browser
http://msdn.microsoft.com/en-us/library/ms536905%28v=VS.85%29.aspx
https://developer.mozilla.org/en/DOM/element.onpaste
http://help.dottoro.com/ljxqbxkf.php
http://almaer.com/blog/supporting-the-system-clipboard-in-your-web-applications-what-a-pain
分享到:
相关推荐
然后,JavaScript可以与Flash应用通信,来获取剪贴板数据。这种方法虽然可以绕过浏览器的限制,但需要用户安装Flash插件,并且随着HTML5的发展和各大浏览器厂商开始弃用Flash,这种做法已不再推荐。 #### 实现示例 ...
在获取剪贴板数据时,应尊重用户隐私并遵守相关的数据保护法规。不要无故读取剪贴板数据,特别是在未经用户同意的情况下。 8. **代码示例** 以下是一个简单的Python代码示例,展示如何使用`pyperclip`库获取剪贴...
3. **获取剪贴板数据** 如果剪贴板中有CF_DIB格式的图像数据,我们可以使用`EmptyClipboard`清空剪贴板,然后通过`GetClipboardData`函数获取数据。返回值是一个全局内存句柄,我们可以用`GlobalLock`锁定这段内存,...
剪贴板操作主要包括打开、关闭剪贴板、设置和获取剪贴板数据等步骤。 1. **打开和关闭剪贴板**: 使用`OpenClipboard()`函数打开剪贴板,这允许当前进程访问剪贴板内容。在完成操作后,必须调用`CloseClipboard()`...
易语言通过导入Windows API(应用程序接口)来实现对剪贴板的操作,例如`OpenClipboard`、`EmptyClipboard`、`GetClipboardData`、`CloseClipboard`等,这些函数用于打开、清空、获取剪贴板数据。 2. 定义剪贴板...
在JavaScript中,获取剪贴板数据一直是个棘手的问题,因为出于安全考虑,浏览器对剪贴板的操作进行了严格的限制。然而,在某些特定场景下,比如在网页中实现Excel数据的粘贴,这种功能是必要的。这里我们将探讨一种...
6. `GetDataObject()`:获取剪贴板上的数据对象,包含了所有类型的数据。 获取剪贴板的类型信息,我们需要使用`GetDataObject()`方法。此方法返回一个`IDataObject`接口的实例,它包含了剪贴板上的所有数据。`...
4. 数据处理:获取剪贴板数据后,源码可能会对其进行解析和处理,比如将文本数据展示在界面上,或者保存到文件。 5. 异常处理:在编程中,异常处理是必不可少的一部分。易语言提供了`错误处理`结构来捕获和处理可能...
本篇文章将详细探讨如何在Delphi中获取剪贴板中的Excel数据,并将其封装成自定义的数据集。 首先,我们要理解剪贴板在操作系统中的作用。剪贴板是操作系统提供的一种临时存储区域,用户可以将数据复制到剪贴板,...
获取剪贴板数据则涉及到`EnumClipboardFormats`函数,它用于枚举剪贴板上可用的数据格式。 描述中提到的“实时显示当前剪贴板中的所有类型数据”,这需要监听剪贴板的改变。可以使用`RegisterClipboardFormat`创建...
例如,可以使用`OpenClipboard`,`GetClipboardData`和`CloseClipboard`等函数来获取剪贴板数据。 3. **数据类型处理**:剪贴板可以承载多种数据格式,如文本、图像、HTML等。我们需要根据不同的数据格式进行处理。...
四、获取剪贴板数据 当另一个进程需要读取剪贴板数据时,可以调用 `GetClipboardData` 函数。这个函数会返回一个指向剪贴板数据的指针,但需要注意的是,剪贴板数据并不总是立即可用,因此需要检查 `OpenClipboard` ...
在自动化工具中,获取剪贴板数据可以实现跨程序的信息传递。 6. 源码学习:压缩包中的源码实例,是学习这一知识点的宝贵资源。通过阅读和分析代码,可以加深对易语言剪贴板操作的理解,并能动手实践,提升编程能力...
3. **数据格式判断**:在获取剪贴板数据前,需要先判断剪贴板上是否存在非文本数据。这通常通过`检查剪贴板数据存在`命令来完成,指定特定的数据格式,如位图、富文本等。 4. **数据转换与处理**:对于非文本数据,...
4. 获取剪贴板数据:调用`GetClipboardData(CF_TEXT)`获取文本数据,然后释放内存。 5. 关闭剪贴板:调用`CloseClipboard()`结束剪贴板操作。 示例程序可能如下: ```cpp #include #include void ...
在易语言中,这可能通过调用底层Windows API函数来实现,比如`OpenClipboard`、`EmptyClipboard`、`GetClipboardData`和`CloseClipboard`等函数,它们分别用于打开剪贴板、清空剪贴板、获取剪贴板数据和关闭剪贴板。...
这些函数包括`OpenClipboard()`打开剪贴板,`EmptyClipboard()`清空剪贴板,`SetClipboardData()`设置剪贴板数据,`GetClipboardData()`获取剪贴板数据,以及`CloseClipboard()`关闭剪贴板等。 4. **数据放置与读取...
3. 获取剪贴板数据: 剪贴板上的数据通常以`ClipData`对象的形式存在,可以通过`ClipboardManager.getPrimaryClip()`方法获取。 ```java ClipData clipData = clipboard.getPrimaryClip(); if (clipData != null...
使用剪贴板API时,应尊重用户隐私并谨慎处理剪贴板数据。不要无故读取或修改剪贴板内容,避免滥用权限。同时,注意处理可能出现的错误和异常,确保代码健壮性。 总的来说,获取剪贴板内容在JavaScript中可以通过...
- 使用`OpenClipboard(NULL)`打开剪贴板,`EmptyClipboard()`清空剪贴板内容,`GetClipboardData(CF_DIB)`获取剪贴板中的DIB(设备无关位图)数据,最后用`CloseClipboard()`关闭剪贴板。 2. **DIB(Device ...