shadowgg
小狐狸
小狐狸
  • UID3476
  • 注册日期2005-03-01
  • 最后登录2008-02-01
  • 发帖数16
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:16339回复:19

如何设计js代码,使得在ff中可以copy选中的文本

楼主#
更多 发布于:2005-09-21 20:43
在ie中可以这样:
<script language=javascript>
function CPtext(id){
var obj = document.getElementById(id);
obj.select();
js=obj.createTextRange();
js.execCommand("Copy");
}
</script>
<input name="textfield" type="text" ID="CodeText1" value="hello">
<input type="button" onClick="CPtext('CodeText1')" name="Submit" value="复制到剪贴板">
在firefox中呢?firefox不支持createTextRange
拜服能搞定的大侠!
好东东大家就要共享
magic8421
火狐狸
火狐狸
  • UID2816
  • 注册日期2005-02-05
  • 最后登录2007-03-19
  • 发帖数109
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-09-21 20:43
linux系统里是选择了文本就复制.. 在哪都行
linux有两个剪贴板,一个是选择就复制的,还一个是ctrl+c(也有可能是别的热键,取决程序了)
windows里也有实现这样功能的软件,名字忘了,也是开源的.
我觉得这样的功能不该由网页里的代码实现...要是用户不喜欢怎么板?用户不感觉自己受到强迫吗?喜欢这个功能,自己装上软件就行了何必这么麻烦.
你觉得这个功能好跨平台吗?每个浏览器都支持?
chpn
小狐狸
小狐狸
  • UID10459
  • 注册日期2005-12-09
  • 最后登录2005-12-09
  • 发帖数6
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-09-21 20:43
这样虽然可以复制了,但是也太复杂了嘛,
这样虽然可以复制了,但是也太复杂了嘛
Minisheep
小狐狸
小狐狸
  • UID2333
  • 注册日期2005-01-19
  • 最后登录2006-10-23
  • 发帖数80
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2005-09-21 20:43
/**************************************************
http://www.krikkit.net/howto_javascript_copy_clipboard.html
将字符串maintext复制到剪贴板
**************************************************/
function setClipboard(maintext) {
	if (window.clipboardData) {
		return (window.clipboardData.setData("Text", maintext));
	}
	else if (window.netscape) { 
		netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip) return;
		var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return;
		trans.addDataFlavor('text/unicode');
		var str = new Object();
		var len = new Object();
		var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
		var copytext=maintext;
		str.data=copytext;
		trans.setTransferData("text/unicode",str,copytext.length*2);
		var clipid=Components.interfaces.nsIClipboard;
		if (!clip) return false;
		clip.setData(trans,null,clipid.kGlobalClipboard);
		return true;
	}
	return false;
}
/**************************************************
http://www.codebase.nl/index.php/command/viewcode/id/174
返回剪贴板的内容
**************************************************/
function getClipboard() {
	if (window.clipboardData) {
		return(window.clipboardData.getData('Text'));
	}
	else if (window.netscape) { 
		netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
		var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip) return;
		var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return;
		trans.addDataFlavor('text/unicode');
		clip.getData(trans,clip.kGlobalClipboard);
		var str = new Object();
		var len = new Object();
		try {
			trans.getTransferData('text/unicode',str,len);
		}
		catch(error) {
			return null;
		}
		if (str) {
			if (Components.interfaces.nsISupportsWString) str=str.value.QueryInterface(Components.interfaces.nsISupportsWString);
			else if (Components.interfaces.nsISupportsString) str=str.value.QueryInterface(Components.interfaces.nsISupportsString);
			else str = null;
		}
		if (str) {
			return(str.data.substring(0,len.value / 2));
		}
	}
	return null;
}

至于如何获取textarea里选中的文字,参看
http://www.freewebs.com/yang1984/content.html
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
4楼#
发布于:2005-09-21 20:43

我说的是一些功能和安全性是不能兼得,必须取舍。最这情况下提供用户选举是唯一解决办法。只要设计得好,便不会有太大安全问题。我没说过任何用户智力低、缺乏训练等等。


可能我理解有误,但你举的例子



让我感觉 "其他人" 会这么说。

[quote="abc@home"]
而你则坚持不应该给用户决定,干脆不提供哪些会影响安全性的功能。对吗?[/quote]

是。

我的经验是,用户总是倾向于做出错误的选择,因为外在环境诱导(前面有人用的这个词很传神)用户这么做。

"是" 和 "否" 两种选择看似 50 vs. 50,但你做个调查,我保证用户点 "是" 的机会在 90% 以上。

用户无法理解那么复杂的东西,他只知道点 "是" 就能正常工作了。至于会导致的其它后果,他根本看不见。

好比安装软件,总是有一个 licenses 页面,要你点 "接受" 还是 "拒绝" -- 普通用户无论如何也无法理解里面的法律用语(我估计你 abc@home 也不行,呵呵),他能做的就是被动 "接受"。所以实际上根本没得选择,因为这跟问 你要死还是要活 类似。

目前的软件太复杂,必须有人帮用户决定,就象必须有律师帮我们处理法律事务。
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
5楼#
发布于:2005-09-21 20:43
你反复强调已经提供了某某功能,用户需要做的仅仅是善加使用,他们之所以中招,仅仅是由于用户智力低下、缺乏训练;我说的是,你不能也无法要求用户正确使用你那一套东西,你那一套东西是反人性的。
...

我说的是一些功能和安全性是不能兼得,必须取舍。最这情况下提供用户选举是唯一解决办法。只要设计得好,便不会有太大安全问题。我没说过任何用户智力低、缺乏训练等等。

而你则坚持不应该给用户决定,干脆不提供哪些会影响安全性的功能。对吗?



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
ydgi
火狐狸
火狐狸
  • UID2074
  • 注册日期2005-01-12
  • 最后登录2007-04-03
  • 发帖数166
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
6楼#
发布于:2005-09-21 20:43
有时很怪用户以管理员帐号登录.

在M$的Windows 上, 有些应用程序的不良设计会诱导用户以管理员帐号登录的. 以QQ为例, QQ将用户的个人资料包括聊天记录存放在QQ程序所在的文件夹上, 这时, 如果该文件夹所在的磁盘分区格式是 NTFS ,结果, 在默认设置下, 除了管理员, 普通用户的帐号是不能使用QQ的.

在Linux上, 就很少出现上面的情况. 因为linux中的应用程序通常将用户配置文件放在用户的主文件夹上, 至少 LumaQQ 如此.
问题专家
火狐狸
火狐狸
  • UID5440
  • 注册日期2005-04-24
  • 最后登录2006-02-08
  • 发帖数231
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
7楼#
发布于:2005-09-21 20:43
呵呵楼上的这条说得是我  “用户是永远用管理员账号登陆的人”,我知道不用管理员账号安全可换了别的账号上不了网,难道用非管理员账号登陆还需要再装一遍拨号软件吗?
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
8楼#
发布于:2005-09-21 20:43
上面的例子不太明显,这里再说一个,就是 Office 软件自动存盘功能。

我们都知道,Word 有个功能,就是每隔 5 分钟会自动帮用户存一下盘,这样万一死机不会一整天都白费工夫。

我们不能取消这个功能,代之以 在手册里写一句 用户应当记住每隔 5 分钟存盘一次,否则可能会将所做的修改全部丢失 就万事大吉。

用户不是闹钟,不可能达到这个要求。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
9楼#
发布于:2005-09-21 20:43
abc@home,我们说的不是一回事。

你反复强调已经提供了某某功能,用户需要做的仅仅是善加使用,他们之所以中招,仅仅是由于用户智力低下、缺乏训练;我说的是,你不能也无法要求用户正确使用你那一套东西,你那一套东西是反人性的。

如果我设计一套软件,保证绝对安全,但是要求你记住 256 位数字的密码,你认为合理吗?现在用户就是被要求做这类事情。

一款安全的软件,仅仅仔细检查输入值保证不超过范围是不够的,必须从设计开始,就要基于这个高度真实的假定:绝大多数用户永远只会使用默认值

软件开发人员的确给了用户一个相当有效的刹车,只不过它需要 1000 公斤的力才能踩下去,结果仅有 10% 的人能够正常使用,因此对 90% 的人来说等于不存在。

至于想用 FF 上跑 Intranet 的人,和我这样用 FF 浏览的人有什么关系呢?如果现有方案不能保证两者都可用,那么请重新设计一种方案,而不是说:就这样了,将就着用用吧。

用户不是 IT 专家。相反,用户是用 FF 下载完成后,却不知道文件存放在什么地方的人。用户是直到硬盘损坏,才想起来没有备份的人。用户是永远用管理员账号登陆的人。用户是用生日作密码的人。用户是在所有需要密码的地方使用同一个密码的人。

这是生来就写在每个人的 DNA 上的东西,你很难通过简单说教来改变。开发人员应当正视这个现实。
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
10楼#
发布于:2005-09-21 20:43


我的意思是,整个安全性架构当中,根本就不应当存在用户这个角色。否则即是一个失败的安全性架构,没有任何安全性可言。

IE 也好,Firefox 也好,永远不要把本地应用和网络上下载来的程序混为一谈,然后指望用户善加区分 -- 用户既不会,也不能。

如果不开发 xpcom,FF 怎样满足企业用户执行 intranet 程式的需要?



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
11楼#
发布于:2005-09-21 20:43

IE 以往的默认安全性设置较低,才做成 activex 安装问题,但 sp2 收紧默认安全性设置,activex 自动安装问题已经解决。当然用户主动安装或授权安装恶意软件/控件仍然不能避免。


这个例子很明显的展示出,用户仅仅是使用默认设置,你不能指望用户会设置你那一套安全机制。

而且,普通用户只会越设越松,绝不会越设越紧。



我的经验是,只有少数人会通过学习自行寻找解决办法,绝大多数永远保持在 "新人" 状态。

[quote="abc@home"]
FF 不是也发展 xpcom 来加强功能吗?重要的是怎样加强安全性,而非禁止或不支持。
[/quote]

我的意思是,整个安全性架构当中,根本就不应当存在用户这个角色。否则即是一个失败的安全性架构,没有任何安全性可言。

IE 也好,Firefox 也好,永远不要把本地应用和网络上下载来的程序混为一谈,然后指望用户善加区分 -- 用户既不会,也不能。
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
12楼#
发布于:2005-09-21 20:43
你说的这些东西仅仅是理论上听起来很好,实际当中作用很小,因为用户根本不会吃你那一套。不客气地说,就是那种要人喂到跳蚤嘴里才起作用的跳蚤药。

这么多年来 IE 上 ActiveX 的教训还不够吗?IE 提供的那些设置、那些等级,有用吗?不要下载、运行来历不明的软件、不要用管理员权限登录,说了多少年又多少年,有人听劝告吗?

IE 以往的默认安全性设置较低,才做成 activex 安装问题,但 sp2 收紧默认安全性设置,activex 自动安装问题已经解决。当然用户主动安装或授权安装恶意软件/控件仍然不能避免。

安全意识需要时间培养。国外用户较早接触互联网,安全意识一般较高,基本上不存在那些比如乱按确认等问题。


新人不熟悉环境,有问题直接在论坛发问是十分平常。如果解答他们同时给出 FAQ/KB 链接,他们下次便懂得在哪里找答案。当然也不能完全避免"重犯"。

[quote="mopz0506"]IE7 刚去了 ActiveX,现在 MS 变本加厉,又来了一个集成更加紧密的 .Net 2.0,据说网页可调用整个 .Net 类库。如果是真的,安全问题只会更突出。等着瞧吧。[/quote]
FF 不是也发展 xpcom 来加强功能吗?重要的是怎样加强安全性,而非禁止或不支持。



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
zhh01pfg
千年狐狸
千年狐狸
  • UID2948
  • 注册日期2005-02-11
  • 最后登录2011-06-15
  • 发帖数1488
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
13楼#
发布于:2005-09-21 20:43
其实有时候我们根本就不需要那么多功能。
mopz0506
狐狸大王
狐狸大王
  • UID811
  • 注册日期2004-12-13
  • 最后登录2006-07-13
  • 发帖数539
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
14楼#
发布于:2005-09-21 20:43

安全性及功能很多时是不能兼得的,提供选择是唯一解决方法,总不能因为菜刀危险便要厨师用剪刀吧。

要加强安全性可以透过很多方法,比如:
- 把默认值设置较安全水平;
- 把设置放在一般用户不会接触到地方;
- 在用户改变设置时提供足够说明;
- ...


你说的这些东西仅仅是理论上听起来很好,实际当中作用很小,因为用户根本不会吃你那一套。不客气地说,就是那种要人喂到跳蚤嘴里才起作用的跳蚤药。

这么多年来 IE 上 ActiveX 的教训还不够吗?IE 提供的那些设置、那些等级,有用吗?不要下载、运行来历不明的软件、不要用管理员权限登录,说了多少年又多少年,有人听劝告吗?

举个身边的例子,FF 有了问题,本论坛有多少人会先去看 FAQ?会先去搜索?还不是直接就发贴子来问,同样的问题反复回答?比如 Linux 下安装 Firefox 的问题,我就回答过好几次。

以前我对这种上来就问的人是深恶痛绝,但是这种情况多了,渐渐地我明白这是人的本性,不应苛责。

什么是易用性?

不是 Longhorn/Mac 那个什么超级眩的基于 DirectX 还是 OpenGL 的狗屁不通的图形界面,而是用户上来不用任何设置就用,用上三年什么状况都不出,使用过程中程序什么问题都不问。

IE7 刚去了 ActiveX,现在 MS 变本加厉,又来了一个集成更加紧密的 .Net 2.0,据说网页可调用整个 .Net 类库。如果是真的,安全问题只会更突出。等着瞧吧。
上一页
游客

返回顶部