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 相关文章推荐
你真的了解JavaScript吗?
Feb 24 Javascript
JavaScript实现随机替换图片的方法
Apr 16 Javascript
jQuery基于cookie实现的购物车实例分析
Dec 24 Javascript
form表单转Json提交的方法(推荐)
Sep 23 Javascript
jQuery基于排序功能实现上移、下移的方法
Nov 26 Javascript
js获取元素下的第一级子元素的方法(推荐)
Mar 05 Javascript
浅谈Angular HttpClient简单入门
May 04 Javascript
Angular使用动态加载组件方法实现Dialog的示例
May 11 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 Javascript
小程序实现搜索框
Jun 19 Javascript
Map与WeakMap类型在JavaScript中的使用详解
Nov 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
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
在PHP上显示JFreechart画的统计图方法
2013/11/03 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
php常用正则函数实例小结
2016/12/29 PHP
PHP命令Command模式用法实例分析
2018/08/08 PHP
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
2011/07/31 Javascript
jquery获取一组checkbox的值(实例代码)
2013/11/04 Javascript
javascript操作html控件实例(javascript添加html)
2013/12/02 Javascript
Jquery给基本控件的取值、赋值示例
2014/05/23 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
2016/09/21 Javascript
node.js中路由,中间件,ge请求和post请求的参数详解
2017/12/26 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
解决layer.prompt无效的问题
2019/09/24 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
Vuex实现简单购物车
2021/01/10 Vue.js
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python定时任务sched模块用法示例
2018/07/16 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
浅析python 字典嵌套
2020/09/29 Python
美国糖果店:Sugarfina
2019/02/21 全球购物
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
计算机应用毕业生自荐信
2013/10/23 职场文书
培训讲师邀请函
2014/01/10 职场文书
优秀辅导员事迹材料
2014/02/16 职场文书
销售助理岗位职责
2014/02/21 职场文书
2014组织生活会方案
2014/05/19 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
超市创意活动方案
2014/08/15 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
追讨欠款律师函
2015/05/27 职场文书
呐喊读书笔记
2015/06/30 职场文书
祝寿主持词
2015/07/02 职场文书