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 相关文章推荐
了解jQuery技巧来提高你的代码
Jan 08 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
微信小程序链接传参并跳转新页面
Nov 29 Javascript
浅析vue数据绑定
Jan 17 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
vue+Java后端进行调试时解决跨域问题的方式
Oct 19 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
Jun 25 Javascript
微信小程序中上传图片并进行压缩的实现代码
Aug 28 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
Feb 04 Javascript
js最全的数组的降维5种办法(小结)
Apr 28 Javascript
Javascript执行上下文顺序的深入讲解
Nov 04 Javascript
JavaScript事件的委托(代理)的用法示例详解
Feb 18 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
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
PhpStorm本地断点调试的方法步骤
2018/05/21 PHP
JavaScript 仿关机效果的图片层
2008/12/26 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
Jquery判断IE6等浏览器的代码
2011/04/05 Javascript
基于jquery封装的一个js分页
2011/11/15 Javascript
基于jquery的拖动布局插件
2011/11/25 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
浅谈jquery页面初始化的4种方式
2016/11/27 Javascript
搭建简单的nodejs http服务器详解
2017/03/09 NodeJs
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
讲解Python中fileno()方法的使用
2015/05/24 Python
Django model序列化为json的方法示例
2018/10/16 Python
Python 忽略warning的输出方法
2018/10/18 Python
python深copy和浅copy区别对比解析
2019/12/26 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
2020/12/13 Python
python 装饰器的基本使用
2021/01/13 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
环境科学专业研究生求职信
2013/10/02 职场文书
商场父亲节活动方案
2014/08/27 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
中学教师师德师风承诺书
2015/04/28 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL