JS 巧妙获取剪贴板数据 Excel数据的粘贴


Posted in Javascript onJuly 09, 2009

另外的方法就是用flash了,它可以避开浏览器的安全限制,但是system类中只有set的方法,另外的clipboard类中倒是能访问到,但是似乎需要flash10的版本支持。

网上找了一圈,没啥发现。终于想到去看看google sheet是怎么干的。
发现google sheet实现了excel的纯文本的多数据格粘贴,没有安全限制的需要,没有使用flash。可能很多人都知道这种方法了,反正我一开始很惊讶的,但是无奈,google的js文件是处理过的,看起来太累了。然后又去找ZOHO sheet,它的js文件只简单处理了一下,能debug,能看。
原来,其在body上注册了onkeydown事件,当用户按下ctrl+v键的时候,js将焦点转移到一个textarea标签上,这样,接下来的keyPress和keyUp事件就发生在textarea上了,自然而然的就相当于用户在textarea中复制了一下,然后,js再将焦点转移,从textarea中将值取到。这样就取到了剪贴板内文本数据了。
下面是一个模仿ZOHO sheet实现的小例子。

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>无标题文档</title> 
<script type="text/javascript"><!-- 
    function cellkeydown(event) { 
        if (event.ctrlKey && event.keyCode == 86) { 
            var ss = document.getElementById("textArea"); 
            ss.focus(); 
            ss.select(); 
            // 等50毫秒,keyPress事件发生了再去处理数据 
            setTimeout("dealwithData()",50); 
        }     
    } 
    function dealwithData(event) { 
            var ss = document.getElementById("textArea"); 
            alert(ss.value); 
            ss.blur(); 
    } 
// --></script> 
</head> 
<body onkeydown="return cellkeydown(event)"> 
<div> 
    <textarea id="textArea">

获得的Excel的文本数据,按照\t,\n就可以分割得到格子和行信息了。但这样只能得到简单的纯文本的excel值,格子的样式都弄不到。但我发现一个方法,当向iframe的document中复制的时候(就是在线编辑器的实现方式),这样能出现一些样式信息,IE中特别全,估计是因为自己家的产品自己能解析的缘故,FF和Chrome就只能得到行号列宽等一些简单的属性。不知道谁有方法能得到比较全的信息。
Javascript 相关文章推荐
Extjs3.0 checkboxGroup 动态添加item实现思路
Aug 14 Javascript
分享一则JavaScript滚动条插件源码
Mar 03 Javascript
javascript每日必学之继承
Feb 23 Javascript
JS模拟bootstrap下拉菜单效果实例
Jun 17 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
Angularjs 与 bower安装和使用详解
May 11 Javascript
详解Angular2中Input和Output用法及示例
May 21 Javascript
详细介绍RxJS在Angular中的应用
Sep 23 Javascript
浅谈实现vue2.0响应式的基本思路
Feb 13 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 Javascript
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
Apr 27 Javascript
Vue-cli 移动端布局和动画使用详解
Aug 10 Javascript
JavaScript 继承的实现
Jul 09 #Javascript
jquery text,radio,checkbox,select操作实现代码
Jul 09 #Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
Jul 09 #Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
Jul 09 #Javascript
javascript xml为数据源的下拉框控件
Jul 07 #Javascript
JS 自动完成 AutoComplete(Ajax 查询)
Jul 07 #Javascript
javascript 选择文件夹对话框(web)
Jul 07 #Javascript
You might like
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
AutoSave/自动存储功能实现
2007/03/24 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
jquery动态加载js/css文件方法(自写小函数)
2014/10/11 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
JS原生数据双向绑定实现代码
2017/08/14 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
Python3.x版本中新的字符串格式化方法
2015/04/24 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
python实现归并排序算法
2018/11/22 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
python实现代码统计器
2019/09/19 Python
快速了解Python开发环境Spyder
2020/06/29 Python
Django def clean()函数对表单中的数据进行验证操作
2020/07/09 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
项目合作计划书
2014/01/09 职场文书
三严三实学习心得体会
2014/10/13 职场文书
2015年母亲节活动策划方案
2015/05/04 职场文书
爱岗敬业事迹材料
2019/06/20 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL