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实现可改变滚动方向的无缝滚动实例
Jun 17 Javascript
jQuery之选择组件的深入解析
Jun 19 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
给html超链接设置事件不使用href来完成跳
Apr 20 Javascript
js实现简易的单数字随机抽奖(0-9)
Mar 19 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
Aug 01 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
vue中的非父子间的通讯问题简单的实例代码
Jul 19 Javascript
详解vue前后台数据交互vue-resource文档
Jul 19 Javascript
javascript+HTML5 canvas绘制时钟功能示例
May 15 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
Jul 07 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里面的抽象类
2010/01/28 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
ThinkPHP实现事务回滚示例代码
2014/06/23 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
2017/06/07 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
基于jQuery实现最基本的淡入淡出效果实例
2015/02/02 Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
2015/06/19 Javascript
详解javascript的变量与标识符
2016/01/04 Javascript
ajax跨域调用webservice的实现代码
2016/05/09 Javascript
微信小程序 使用canvas制作K线实例详解
2017/01/12 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
JavaScript实现更换背景图片
2019/10/18 Javascript
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
详解Python中的测试工具
2019/06/09 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python包和模块的分发详细介绍
2020/06/19 Python
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
奢华时尚的创新平台:Baltini
2020/10/03 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
JAVA软件工程师测试题
2014/07/25 面试题
工作表现评语
2014/01/19 职场文书
表扬稿表扬信的格式及范文
2019/06/24 职场文书
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers