2010年10月15日星期五

利用flash实现Web中的特殊功能

本文阅读对象是(我这样的)flash技术门外汉。

Web中有些功能看似很神奇,因为这些是难以用标准web技术实现的,其实是用flash实现的。我项目中最近的两个小功能用到了flash,分享一下。

flash 本质上不是web标准技术,而是系统上独立于浏览器之外的第三方插件程序(由Adobe公司提供)。
但因为其普及率非常之高, flash又是“事实上”web技术的一部分,是事实标准。

用它可以实现一些看似浏览器不支持的事情,另一个好处是跨浏览器、跨平台。

一、将web上的内容复制到系统剪切板

出于安全原因,有些浏览器不支持复制到剪切板,IE虽然可以,但也会给出个警告。前几天, 我用 zeroclipboard 实现了这个功能,zeroclipboard就是使用flash技术实现了在浏览器上复制javascript提供的内容到系统剪切板上。正因为用的是flash,所以这个实现就可以跨浏览器、跨平台。核心api:System.setClipboard() ,当然因为安全原因,flash只能set剪切板内容,不能get剪切板内容。


二、熟客识别——使用flash本地存储替代cookie,清除cookie也没用

在用户不登录验证的情况下,想识别出对方,基本的办法是在对方的电脑上加个用户标识,以此来识别。否则没人知道电脑面前坐的是一只狗。最常见的方法是利用存储在本地的cookie,这是标准技术,已经可以满足一般需求。当然用户清空浏览器cookie或使用别的浏览器cookie就没了。比如浏览器的隐私浏览模式中就不保存cookie(关闭窗口时清掉)。

flash也有本地存储功能,类似于cookie的技术,因此可以替代cookie完成同样的事。国内的很多在线客服产品都使用这种技术。打着所谓的“国际/国内领先技术”,描述只说是“非cookie技术,清空cookie也能识别”,但不说是什么技术,因为说了就不灵了。

既然技术上都是类似的,flash之所以比cookie更有效的关键在于多数网民不知道flash有本地存储、不知道可以清空flash本地存储。清除浏览器数据的时候是不会清除flash数据的,因为flash不受浏览器控制。这也要怪adobe公司没有在显眼的地方告诉用户,这可是用户的隐私呀。

用户实际上可以自己设置flash本地存储策略,在这里还可以清理flash本地存储:http://www.macromedia.com/support/documentation/cn/flashplayer/help/settings_manager07.html