跨浏览器使用剪贴板
作者:realazy 来源:realazy 发布时间:2008-09-27 13:26:00
标签:浏览器,剪贴板,JavaScript
一般情况下,访问或设置剪贴板,IE 只需使用 window.clipboardData
的 getData
或 setData
方法即可。Mozilla 家族的浏览器(如 Firefox)则比较麻烦,不仅开发者需要写一沱代码,用户也需要主动配合(就是需要设置允许访问剪贴板)才可以(参考 Using the Clipboard),以致几不可用。至于 Opera 则根本不提供剪贴板,Safari 可以在 onpaste 等非Dom 事件中访问剪贴板(参考 Using the Pasteboard From JavaScript)。
中国特色的网站上有一个很中国特色的应用就是,在一个输入框 focus 时自动帮你把内容复制到了剪贴板中。老实说访问剪贴板是个不安全的操作,因此即使是 IE, Windows 在后来的升级中都加入是否允许访问剪贴板的提醒。如果能够做到跨浏览器的“ * 地悄无声息”地实现中国特色的剪贴板应用,确实是个不小的挑战。
遗憾的是老外在 2006 年就帮我们做到了:使用 Flash。参考 Clipboard Copy. 原版没有考虑不安转或禁止 Flash 的情况,我做了一个小改进:
function copy(inElement) {
var get = function(id){
return document.getElementById(id);
},
elId = 'flashcopier',
embedId = 'flashembed';
if(!get(elId)) {
var divholder = Document.createElement('div');
divholder.setAttribute('id', elId);
document.body.appendChild(divholder);
}
var divholder = get(elId);
divholder.innerHTML = '<embed src="http://static.hainei.com/swf/cp.swf"\
FlashVars="clipboard='+encodeURIComponent(inElement.value)+'"\
width="0" height="0" type="application/x-shockwave-flash"\
id="'+embedId+'"></embed>';
// 检测是否安装了 Flash
var flashObj = window[embedId] || document[embedId] || {};
if (!flashObj.SetVariable){// 没有 flash
try {
return window.clipboardData.setData("Text", inElement.value);
}
catch(ex){
return false;
}
}
return true;
}
原版是 GPL 的,这个版本也请爱咋咋用……
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 前言:在上篇博文中使用了matplotlib绘制了3D小红花,本篇博客主要介绍一下3D小红花的绘制原理。1. 极坐标系对于极坐标
- 实例如下:</pre><pre name="code" class="python"
- 1、问题描述某厂生产甲乙两种饮料,每百箱甲饮料需用原料6千克、工人10名,获利10万元;每百箱乙饮料需用原料5千克、工人20名,获利9万元。
- 本文实例讲述了Python全局变量与局部变量区别及用法。分享给大家供大家参考,具体如下:对于很多初学的同学,对全局和局部变量容易混淆,看看下
- 利用python代码生成一个随机的MAC地址,使用python网络编程时或可用上,如果使用scapy模块则可直接利用RandMAC()函数来
- mac下安装mysql8.0.11时 要求输入密码 之后想修改密码注意 此方法适用于mac下的mysql8.0.11 其他版本不一定相同1.
- 1: 更新代码时, 监测到本地代码改变,需要和合并,重启之后才可以, 选择No同时,代码会被冲掉,新增加的文件也会被冲掉, 但是pychar
- 文章首先使用pycharm的 PyQt5 Designer 做一个简单的界面,然后引入所谓的“mvc框架”。一、设计登录界面下面开始第一个话
- 概述Mysql的Replication(复制)是一个异步的复制过程,从一个 Mysql instance(我们称之为 Master)复制到另
- 1、使用mysqldump工具将MySql数据库备份mysqldump -u root -p -c --default-character-
- 前言之前在使用包括大型文档(商汤科技、百度飞浆)代码的时候都一直使用 pip install -v -e . ,这一命令,但是一直不是很清楚
- 下载并选择MySQL的安装包由于MySQL一直在升级,所以当您阅读本文时,或许在其官方网站上已提供了新的正式版供你下载,因此,以下提供的链接
- 用wdcp官方提供的脚本安装lnamp环境,安装请参考:http://www.wdlinux.cn/bbs/thread-6292-1-1.
- 最近工作中慢慢开始用python协程相关的东西,所以用到了一些相关模块,如aiohttp, aiomysql, aioredis等,用的过程
- Dynaconf 是一个 Python 的第三方模块,旨在成为在 Python 中管理配置的最佳选择。它可以从各种来源读取设置,包括环境变量
- DreamWeaver 4的到来让大家兴奋吧?但是大家一定为DreamWeaver4里面的字体、文字大
- 1.sort()方法sort()是列表的方法,修改原列表使得它按照大小排序,没有返回值,返回NoneIn [90]: x = [4, 6,
- picker-view 相关文章:微信小程序 Button 微信小程序 radio 微信小程序 slider 微信小程序 switch微信小
- asp十进制转二进制;二进制转十进制;二进制转十六进制;十六进制转二进制;八进制转二进制'二进制转八进制;八进制转十进制;十六进制转
- 1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制