<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.qgy18.com/styles/feedsky2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/JerryQu" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/JerryQu" type="application/rss+xml"></fs:self_link><lastBuildDate>Sat, 05 Sep 2009 15:36:57 GMT</lastBuildDate><title>JerryQu的小站</title><description>漂来漂去</description><link>http://www.qgy18.com</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Fri, 22 Jan 2010 01:37:05 GMT</pubDate><item><title>使用Gears获取当前地理位置</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261673/5163833/1/item.html</link><content:encoded>&lt;p&gt;晚上在Google Code上闲逛，发现google gears从0.4版开始新增了一个获取当前地理位置的&lt;a href=&quot;http://code.google.com/apis/gears/api_geolocation.html&quot;&gt;Geolocation API&lt;/a&gt;。试用了一下，居然准确地找到了我的当前位置，很神奇～&lt;img src=&quot;http://www.qgy18.com/wp-content/401705e0-e662-44bc-9099-72c5e4ad7ed7.JPG&quot; alt=&quot;401705e0-e662-44bc-9099-72c5e4ad7ed7&quot; title=&quot;401705e0-e662-44bc-9099-72c5e4ad7ed7&quot; width=&quot;326&quot; height=&quot;249&quot; class=&quot;alignright size-full wp-image-157&quot; /&gt;&lt;/p&gt;
&lt;p&gt;相信大家对Google Gears都已经很熟悉了，三大主要功能：本地存储DataBase、本地服务器LocalServer、任务池WorkerPool，外加一个桌面相关功能DeskTop。如果对Gears的这几个特性不是很了解，可以参看老六写的&lt;a href=&quot;http://www.welefen.com/2008/09/20/gears/&quot;&gt;这篇文章&lt;/a&gt;。在我这篇文章里只讨论Geolocation API。&lt;/p&gt;
&lt;p&gt;这个API使用起来很简单，下面简单的列一下：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;geo&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;factory&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;create&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;beta.geolocation&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//创建geolocation对象&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;okCallback&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;当前位置(纬度，经度): &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;latitude&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;d&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;longitude&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;errorCallback&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;err&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;geo&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getCurrentPosition&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;okCallback&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; , &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;errorCallback&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;基本就是这样了，在这之前创建factory以及获得permission的代码就不贴了，&lt;a href=&quot;http://www.qgy18.com/lab/gears/gears_mini.js&quot;&gt;看下源码&lt;/a&gt;就OK了。&lt;/p&gt;
&lt;p&gt;另外，随手抓包看了下这个API实现的原理，其实就是post当前用户的一些信息给google服务器（我这里，post的数据有wifi的ssid，信号强度啥的），服务器就会返回当前的位置，这个技术上没啥特别的，关键在于数据的丰富程度与是否精确。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;strong&gt;request:&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;post&lt;/strong&gt; http://www.google.com/loc/json&lt;br /&gt;
&lt;strong&gt;data&lt;/strong&gt; { &amp;#8220;access_token&amp;#8221; : &amp;#8220;2:FIcsRNHXKylSLYpZ:N7RPZxjyMIX4AiMb&amp;#8221;, &amp;#8220;host&amp;#8221; : &amp;#8220;test.*.*.com&amp;#8221;, &amp;#8220;radio_type&amp;#8221; : &amp;#8220;unknown&amp;#8221;, &amp;#8220;request_address&amp;#8221; : false, &amp;#8220;version&amp;#8221; : &amp;#8220;1.1.0&amp;#8243;, &amp;#8220;wifi_towers&amp;#8221; : [ { &quot;mac_address&quot; : &quot;00-*-*-*-*-ea&quot;, &quot;signal_strength&quot; : -73, &quot;ssid&quot; : &quot;***&quot; }, { &quot;mac_address&quot; : &quot;00-*-*-*-*-aa&quot;, &quot;signal_strength&quot; : -80, &quot;ssid&quot; : &quot;*-*&quot; }, { &quot;mac_address&quot; : &quot;00-*-*-*-*-ba&quot;, &quot;signal_strength&quot; : -44, &quot;ssid&quot; : &quot;*-*&quot; } ] }&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;response:&lt;/strong&gt;&lt;br /&gt;
{&amp;#8220;location&amp;#8221;:{&amp;#8220;latitude&amp;#8221;:40.050772,&amp;#8221;longitude&amp;#8221;:116.308348,&amp;#8221;accuracy&amp;#8221;:150.0}}
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;大家有空也可以试一试，看Gears能不能找到你的位置（需要先安装Google Gears，Chrome已经内置了Gears）。&lt;a href=&quot;http://www.qgy18.com/lab/gears/&quot;&gt;点这里&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/324261673/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261673/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261673/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261673/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/09/%e4%bd%bf%e7%94%a8google-gears%e8%8e%b7%e5%8f%96%e5%bd%93%e5%89%8d%e5%9c%b0%e7%90%86%e4%bd%8d%e7%bd%ae/feed/</wfw:commentRss><slash:comments>1</slash:comments><description>晚上在Google Code上闲逛，发现google gears从0.4版开始新增了一个获取当前地理位置的Geolocation API。试用了一下，居然准确地找到了我的当前位置，很神奇～
相信大家对Google Gears都已经很熟悉了，三大主要功能：本地存储DataBase、本地服务器LocalServer、任务池WorkerPool，外加一个桌面相关功能DeskTop。如果对Gears的这几个特性不是很了解，可以参看老六写的这篇文章。在我这篇文章里...&lt;img src=&quot;http://www1.feedsky.com/t1/324261673/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261673/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261673/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261673/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>前端开发</category><category>gears</category><pubDate>Sat, 05 Sep 2009 23:36:57 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/09/%e4%bd%bf%e7%94%a8google-gears%e8%8e%b7%e5%8f%96%e5%bd%93%e5%89%8d%e5%9c%b0%e7%90%86%e4%bd%8d%e7%bd%ae/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=156</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/09/%e4%bd%bf%e7%94%a8google-gears%e8%8e%b7%e5%8f%96%e5%bd%93%e5%89%8d%e5%9c%b0%e7%90%86%e4%bd%8d%e7%bd%ae/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261673/5163833</fs:itemid></item><item><title>用flash计算图片平均颜色</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261674/5163833/1/item.html</link><content:encoded>&lt;p&gt;什么是图片平均色呢？我也不知道它的准确定义，总之看下面这张图就明白了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.qgy18.com/wp-content/2009-09-02_014118.png&quot; alt=&quot;2009-09-02_014118&quot; title=&quot;2009-09-02_014118&quot; width=&quot;232&quot; height=&quot;263&quot; class=&quot;alignleft size-full wp-image-150&quot; /&gt;算出图片平均色有用么？用来做马赛克拼图的时候肯定会用到。另外，网上也有不少依赖于这个的应用：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://labs.ideeinc.com/multicolr&quot;&gt;Multicolr Search Lab&lt;/a&gt;，一个能够根据所选颜色找到flickr图片的网站，计算图片平均色应该是其关键的步骤。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://cid-75092ea9bca0f75b.skydrive.live.com/play.aspx/D2?ref=1&quot;&gt;live照片&lt;/a&gt;的幻灯片播放界面，背景会随着图片的切换而变化为当前图片的平均色填充，看上去很是自然、和谐。&lt;/p&gt;
&lt;p&gt;还有&lt;a href=&quot;http://www.opera.com/mini/&quot;&gt;Opera Mini&lt;/a&gt;，优秀的手机浏览器，细心的同学可能会发现它显示未下载的图片时，会用一个色块代替，当然这个色块也是该图片的平均色。&lt;/p&gt;
&lt;p&gt;那么，怎么能得到图片的平均色呢？&lt;a href=&quot;http://jandan.net/2007/04/28/cool-tool-to-determine-the-average-color-in-a-photograph.html&quot;&gt;这里&lt;/a&gt;有煎蛋提供的一个可以完成该功能的软件，这里还有个&lt;a href=&quot;http://www.wisegeek.com/how-can-i-find-the-average-color-in-a-photograph.htm&quot;&gt;国外的网站&lt;/a&gt;也提供了类似的功能。这些桌面程序或者后端程序的实现不属于这篇文章的讨论范畴了，用flash在前端同样可以实现，比如说下面这个Demo。&lt;/p&gt;
&lt;p&gt;	&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0&quot; width=&quot;360&quot; height=&quot;270&quot; id=&quot;Flickr1&quot; align=&quot;middle&quot;&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;sameDomain&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;false&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;/Flickr_n.swf&quot; /&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot; /&gt;&lt;param name=&quot;wmode&quot; value=&quot;transparent&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#9ed5e1&quot; /&gt;&lt;embed wmode=&quot;transparent&quot; src=&quot;/Flickr_n.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#9ed5e1&quot; width=&quot;360&quot; height=&quot;270&quot; id=&quot;Flickr2&quot; align=&quot;middle&quot; allowScriptAccess=&quot;sameDomain&quot; allowFullScreen=&quot;false&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.adobe.com/go/getflashplayer_cn&quot; /&gt;&lt;br /&gt;
	&lt;/object&gt;&lt;/p&gt;
&lt;p&gt;我采用的方法是&lt;a href=&quot;http://hi.baidu.com/jkisjk&quot;&gt;JK&lt;/a&gt;提出的。取到图片后，分别读取图片每一个像素R、G、B三种色值，累加起来再除以图片总像素数，也就是图片宽×高，得到R、G、B的平均值，继而得到平均颜色。核心的代码在下面：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;imgData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;BitmapData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Bitmap&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;bitmapData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;red&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Number&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Number&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;green&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Number&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;lt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;imgData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;lt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;imgData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;pixel&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Pixel&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Pixel&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;imgData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;getPixel32&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;j&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;))&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;red&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; += &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;pixel&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getRed&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;green&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; += &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;pixel&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getGreen&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; += &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;pixel&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getBlue&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;area&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Number&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;imgData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; * &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;imgData&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;c&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;ColorTransform&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;ColorTransform&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;red&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;area, green&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;area&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; , &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;blue&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;area, 0);&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;/&lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;trace&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;c&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;color&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//Pixel&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;package&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;com&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Pixel&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;uint&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Pixel&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;n1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;uint&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;n1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getRed&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;gt;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;16&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xFF&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getGreen&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;gt;&amp;gt; &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xFF&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;public&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getBlue&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;amp; &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;xFF&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;原理很简单，代码也不多。关键是看应用场景了，用得好的话很容易就起到锦上添花的效果～&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/324261674/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261674/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261674/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261674/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/09/%e7%94%a8flash%e8%ae%a1%e7%ae%97%e5%9b%be%e7%89%87%e5%b9%b3%e5%9d%87%e8%89%b2/feed/</wfw:commentRss><slash:comments>2</slash:comments><description>什么是图片平均色呢？我也不知道它的准确定义，总之看下面这张图就明白了。
算出图片平均色有用么？用来做马赛克拼图的时候肯定会用到。另外，网上也有不少依赖于这个的应用：
Multicolr Search Lab，一个能够根据所选颜色找到flickr图片的网站，计算图片平均色应该是其关键的步骤。
live照片的幻灯片播放界面，背景会随着图片的切换而变化为当前图片的平均色填充，看上...&lt;img src=&quot;http://www1.feedsky.com/t1/324261674/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261674/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261674/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261674/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>前端开发</category><pubDate>Wed, 02 Sep 2009 01:59:17 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/09/%e7%94%a8flash%e8%ae%a1%e7%ae%97%e5%9b%be%e7%89%87%e5%b9%b3%e5%9d%87%e8%89%b2/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=149</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/09/%e7%94%a8flash%e8%ae%a1%e7%ae%97%e5%9b%be%e7%89%87%e5%b9%b3%e5%9d%87%e8%89%b2/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261674/5163833</fs:itemid></item><item><title>跨浏览器的“复制到剪贴板”.续</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261675/5163833/1/item.html</link><content:encoded>&lt;p&gt;很早之前，写过一篇“&lt;a href=&quot;http://www.qgy18.com/2008/08/clipboard/&quot;&gt;跨浏览器“复制到剪贴板”的解决方案&lt;/a&gt;”，当时给出的解决方案是，IE使用window.clipboardData，firefox等其它浏览器使用flash来调用System.setClipboard方法。但是，随着&lt;a href=&quot;http://www.qgy18.com/2009/01/flash10%e5%ae%89%e5%85%a8%e7%ad%96%e7%95%a5%e6%9b%b4%e6%96%b0/&quot;&gt;Flash10安全策略更新&lt;/a&gt;，只允许在flash内部调用setClipboard方法，那篇文章给出的demo已经失效。我重新写了一个demo，&lt;a href=&quot;http://www.qgy18.com/lab/clipboard2/&quot;&gt;见这里&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;新demo是在flash内部调用的setClipboard方法，原则上安装了flash的浏览器都可以用；另外，IE7及以上版本用js调用clipboardData会弹出选择是否允许的提示，往往初级用户看到这样提示还以为网站有病毒，所以这次一视同仁所有浏览器都用flash写剪切板。原理比较简单，大概说一下：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;页面上提供两个js方法getData和copySuccess供flash调用，getData返回需要复制的内容，copySuccess是复制成功的回调函数；&lt;/li&gt;
&lt;li&gt;往flash里添加一个任意的DisplayObject，例如TextField，注册Click事件，事件响应函数里先调用页面上的js方法getData得到粘贴内容，再用System.setClipboard写入剪切板，最后通知页面上的copySuccess。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;完整的代码&lt;a href=&quot;http://www.qgy18.com/file/code/2.html&quot;&gt;见这里&lt;/a&gt;。如果要个性化提示文字，打开clipboard.as，修改后编译即可。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/324261675/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261675/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261675/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261675/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/08/clipboard2/feed/</wfw:commentRss><slash:comments>3</slash:comments><description>很早之前，写过一篇“跨浏览器“复制到剪贴板”的解决方案”，当时给出的解决方案是，IE使用window.clipboardData，firefox等其它浏览器使用flash来调用System.setClipboard方法。但是，随着Flash10安全策略更新，只允许在flash内部调用setClipboard方法，那篇文章给出的demo已经失效。我重新写了一个demo，见这里。
新demo是在flash内部调用的setClipboard方法，原则上安装了flash的浏览器都可以用...&lt;img src=&quot;http://www1.feedsky.com/t1/324261675/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261675/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261675/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261675/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>跨浏览器</category><category>前端开发</category><category>Flash</category><category>用户体验</category><pubDate>Tue, 25 Aug 2009 22:15:55 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/08/clipboard2/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=145</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/08/clipboard2/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261675/5163833</fs:itemid></item><item><title>Javascript与Flash通信全解析</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261676/5163833/1/item.html</link><content:encoded>&lt;p&gt;刚开始学习flash as3编程，一些学习笔记也丢上来吧，现在还都是些初级的话题～&lt;/p&gt;
&lt;p&gt;Flash已经提供了ExternalInterface接口与JavaScript通信，ExternalInterface有两个方法，call和addCallback，call的作用是让Flash调用js里的方法，addCallback是用来注册flash函数让js调用。下面是官方文档对call和addCallback的说明：&lt;/p&gt;
&lt;p&gt;利用 ActionScript，可以在 HTML 页上执行以下操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;调用任何 JavaScript 函数。&lt;/li&gt;
&lt;li&gt;传递任意数量、具有任意名称的参数。&lt;/li&gt;
&lt;li&gt;传递各种数据类型（Boolean、Number、String 等等）。&lt;/li&gt;
&lt;li&gt;接收来自 JavaScript 函数的返回值。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过在 HTML 页上使用 JavaScript，可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;调用 ActionScript 函数。&lt;/li&gt;
&lt;li&gt;使用标准的函数调用表示法传递参数。&lt;/li&gt;
&lt;li&gt;将值返回给 JavaScript 函数。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实际使用的时候，需要注意以下两点：&lt;/p&gt;
&lt;p&gt;一、调用时机。js调用flash对象提供的函数时，可能swf还没有完全加载完，此时调用会失败。类似的，flash调用js函数时，也存在js函数还没load到的情况。所以adobe官方示例里采用了一种比较绕的逻辑来避免这种问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;页面上有一个变量_isJSReady，初始为false。还有一个isJSReady函数用来返回_isJSReady的值，供flash调用。在合适的时机（例如：window.onload），将_isJSReady设置为true，表示flash可以使用js里的函数了；&lt;/li&gt;
&lt;li&gt;flash里有一个定时器，定期（例如：100ms）去调用页面上的isJSReady方法，直到isJSReady返回true，就可以addCallback，调用页面上的flashReadyHandler方法，通知页面可以跟flash交互了。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;二、如何获取flash对象。将flash插入到页面有很多方法，例如swfobject.js或者AC_RunActiveContent.js类似的库。我们来看一种最原始的方法，直接在html插入标记来插入flash：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;classid&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;codebase&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;http://download.macromedia.com/pub/shockwave/cabs&lt;br /&gt;/flash/swflash.cab#version=10,0,0,0&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;730&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;520&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;test&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;align&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;middle&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;allowScriptAccess&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;sameDomain&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;allowFullScreen&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;movie&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;test.swf&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;quality&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;high&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;param&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;bgcolor&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;#ffffff&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;embed&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;test.swf&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;quality&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;high&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;bgcolor&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;#ffffff&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;730&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;520&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;test&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;align&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;middle&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;allowScriptAccess&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;always&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;allowFullScreen&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;application/x-shockwave-flash&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;pluginspage&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;http://www.adobe.com/go/getflashplayer_cn&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;object&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;假设test.swf提供了hello的方法，我们来在js里调用这个方法，代码如下：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;test&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;hello&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;结果，除了IE之外，其他浏览器都不会工作，会提示找不到hello这个方法。这个问题困扰了我比较久。最后发现：在非IE浏览器里，flash提供的方法是加在embed上的，我们要得到object下的embed对象，调用embed上的方法才会成功！&lt;/p&gt;
&lt;p&gt;官方示例是采用下面方法获取flash对象的：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getFlashMovieObject&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;movieName&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;movieName&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;movieName&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;navigator&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;appName&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;indexOf&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;Microsoft&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;==-&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;embeds&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;embeds&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;movieName&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;])&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;embeds&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;movieName&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;movieName&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;这里罗列出所有情况，当然不会有问题。其实，没必要弄得这么复杂，我们给object和embed取不同名称，例如一个test1，一个test2，如果是IE就getElementById(“test1”)，其它浏览器getElementById(“test2”)就行了。另外，如果使用js插入swf的话，很可能js里就已经做过判断，根据不同浏览器来输出object和embed其中一种。总之，如果调用失败，首先检查得到的flash对象是不是[object HTMLEmbedElement]。&lt;/p&gt;
&lt;p&gt;最后，放上一个例子，是我参照官方文档写的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.qgy18.com/file/code/1.html&quot;&gt;点击这里&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;补充一个细节：在傲游里，刷新页面后js调用flash里的方法可能会失败。&lt;a href=&quot;http://www.qgy18.com/2008/09/maxthon-bugs/&quot;&gt;这篇文章&lt;/a&gt;有提到这个问题，解决方法是给swf地址加上随机数，让浏览器每次都重新加载flash。不过这样swf就不能被浏览器缓存，很无语～下面是一段判断傲游的js代码，建议只针对傲游加随机数。&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;isMaxthon&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;external&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;max_language_id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; != &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;undefined&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;isMaxthon&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;isMaxthon&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/324261676/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261676/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261676/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261676/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/08/flash_externalinterface/feed/</wfw:commentRss><slash:comments>2</slash:comments><description>刚开始学习flash as3编程，一些学习笔记也丢上来吧，现在还都是些初级的话题～
Flash已经提供了ExternalInterface接口与JavaScript通信，ExternalInterface有两个方法，call和addCallback，call的作用是让Flash调用js里的方法，addCallback是用来注册flash函数让js调用。下面是官方文档对call和addCallback的说明：
利用 ActionScript，可以在 HTML 页上执行以下操作：

调用任何 JavaScript 函数。
传递任意数量...&lt;img src=&quot;http://www1.feedsky.com/t1/324261676/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261676/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261676/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261676/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>前端开发</category><category>Flash</category><pubDate>Mon, 24 Aug 2009 17:08:02 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/08/flash_externalinterface/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=140</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/08/flash_externalinterface/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261676/5163833</fs:itemid></item><item><title>WebIM开发之多页面数据同步</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261677/5163833/1/item.html</link><content:encoded>&lt;p&gt;呃，好久没更新博客了，一来最近确实比较忙，二来人也变懒了，这样很不好～要改变！&lt;/p&gt;
&lt;p&gt;今天要讨论的话题是多页面数据同步。顾名思义，就是更新A页面的内容，B页面也要及时反映出改变，当然A、B页面至少要是在同域下才有意义。放在WebIM这个应用场景中来，就是如果有多个页面开着webim，其中任何一个页面上发送或接收到新消息，要在其他所有的页面中同步显示出来。&lt;/p&gt;
&lt;p&gt;使用短连接的WebIM要轮询服务器来获取最新的消息，如果多个页面一起轮询，那么对服务器的消耗还是很大的，使用页面数据同步能减少消耗：无论同时存在多少个聊天页面，同时仅有一个主页面A负责与服务器轮询；在主页面A轮询到服务器消息后，分发给其他页面B、C、D；如果A被关掉了，检测程序会马上检测到，并从剩下的页面中挑选新的页面充当主页面负责通讯；客户端向服务端提交数据不必通过主页面，直接向服务器提交即可，只是提交的数据也需要分发给其他页面，便于同步UI。&lt;/p&gt;
&lt;p&gt;多页面数据同步的实现细化起来，大概就是下面这个流程：&lt;/p&gt;
&lt;p&gt;1.有一套本地化存储方案，要求能本域下任何页面都可以读写数据，至少有set和get两个方法；&lt;/p&gt;
&lt;p&gt;2.页面加载时实例化sync对象，可以指定页面代号(name)方便进行页面分组，系统自动给每个页面分类一个唯一标识符(clientId)，并将这个页面client的相关信息加入clients列表，放进本地存储；&lt;/p&gt;
&lt;p&gt;3.sync提供sendMsg方法，可根据clientID发给单一页面，或根据name发给一组页面，传递的数据(data)是一个JSON，sendMsg方法不关心data的实际结构。将消息的发送者clientID、接收者clientID以及data拼成一个消息JSON，并将多条JSON组成一个消息数组，序列化后放本地存储；&lt;/p&gt;
&lt;p&gt;4.sync通过定时检查并解析本地存储获知是否有新消息，在收到发给自己(根据clientID来判断)的消息后，将这条消息置为已读，并调用onNewMsg方法，将data作为参数传递给它；&lt;/p&gt;
&lt;p&gt;5.页面unload的时候，需要调用remove方法将自己从clients列表中去除。&lt;/p&gt;
&lt;p&gt;另外，每个页面都必须有一个定时器，用来更新clients列表，检查新消息以及删掉已读消息。&lt;/p&gt;
&lt;p&gt;新版本的webim应该会采用这种方案来实现多页面聊天，具体代码我也没写完，不过从下面的demo已经可以看到基本思想：打开多个页面，在文本框写些文字，点击同步按钮，其它页面会同步更新文本框。&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sync&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;MsgSync&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;test2&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//test2是页面名称(name)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sync&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;onNewMsg&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//处理其它页面发过来的消息&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;txt&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;e&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;send&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//向页面名称同为test2的其它页面发送消息&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sync&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sendMsg&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;({&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;test2&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;:$&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;txt&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.qgy18.com/lab/sync/&quot;&gt;点这里打开Demo&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;该方案的让人头疼的是用什么做本地存储：userData需要页面完全一致才能使用；globalStorage只有firefox和ie8才支持；flash、google gear需要装插件，database storage是html5里的内容也没几家支持。这样看来似乎只有session cookie比较靠谱，但众所周知每次与服务器的交互都会带上cookie，cookie本身的容量也很有限。但是，相比较每个页面都轮询服务器而言，就算用cookie存也还是值得的。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/324261677/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261677/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261677/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261677/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/08/webim_data_sync/feed/</wfw:commentRss><slash:comments>3</slash:comments><description>呃，好久没更新博客了，一来最近确实比较忙，二来人也变懒了，这样很不好～要改变！
今天要讨论的话题是多页面数据同步。顾名思义，就是更新A页面的内容，B页面也要及时反映出改变，当然A、B页面至少要是在同域下才有意义。放在WebIM这个应用场景中来，就是如果有多个页面开着webim，其中任何一个页面上发送或接收到新消息，要在其他所有的页面中同步显示出来。
使...&lt;img src=&quot;http://www1.feedsky.com/t1/324261677/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261677/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261677/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261677/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>前端开发</category><category>WebIM</category><category>QGYWebIM</category><pubDate>Tue, 18 Aug 2009 16:01:05 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/08/webim_data_sync/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=137</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/08/webim_data_sync/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261677/5163833</fs:itemid></item><item><title>我的webim被人无耻盗用了～</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261678/5163833/1/item.html</link><content:encoded>&lt;p&gt;今天，一朋友发我一网站，看了差点没让我吐血。。。那网站把我开源的webim拿去弄成英文版的，对我这个作者只字不提，还弄了官方网站、博客和BBS。相比之下，反倒弄得像我是冒牌货似的。&lt;/p&gt;
&lt;p&gt;既然完全公开了源代码，其实我早就预料到这样事情的发生，尽管我在说明里写上“仅供学习和研究使用，严禁用于任何商业用途”，但是对于很多站长拿这个去做盈利网站我也就默认了，偶尔还会无偿提供一下技术支持。&lt;/p&gt;
&lt;p&gt;只是，我一再强调，我这个webim只有前端是用心写过的，后端无论是asp还是php都是随便写的，如果要用在非测试环境中，一定要重写后端代码，否则服务器会吃不消，性能也是一个问题。但是&lt;strong&gt;这个骗子网站在未征求我的同意情况下拿我的demo去骗钱，收39$的服务费&lt;/strong&gt;，这不能不让人愤慨～&lt;/p&gt;
&lt;p&gt;真是林子大了什么鸟都有了。查了一下whois，好像是北京朝阳通州？&lt;/p&gt;
&lt;p&gt;附上&lt;strong&gt;骗子&lt;/strong&gt;网址：&lt;a href=&quot;http://www.fleaim.com&quot;&gt;&lt;del datetime=&quot;2009-05-18T05:40:26+00:00&quot;&gt;www.fleaim.com&lt;/del&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;update：估计这骗子订了我blog的rss，在写这篇文章的不久，刚刚网站已经被解析到其他网站了。幸好我已经将所有相关资料都截图了，不知道是不是换其他域名继续坑人，我会持续关注的。&lt;/p&gt;
&lt;p&gt;PS：新建了一个QQ群，欢迎对我这个webim或者是前端技术有兴趣的同学加进来探讨，我会抽空解答大家的疑问。&lt;br /&gt;
QQ群号：87485493&lt;br /&gt;
51JS讨论贴：&lt;a href=&quot;http://bbs.51js.com/viewthread.php?tid=77474&amp;#038;extra=page%3D1&amp;#038;page=1&quot;&gt;http://bbs.51js.com/viewthread.php?tid=77474&amp;#038;extra=page%3D1&amp;#038;page=1&lt;/a&gt;&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/324261678/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261678/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261678/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261678/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/05/%e6%88%91%e7%9a%84webim%e8%a2%ab%e4%ba%ba%e6%97%a0%e8%80%bb%e7%9b%97%e7%94%a8%e4%ba%86%ef%bd%9e/feed/</wfw:commentRss><slash:comments>15</slash:comments><description>今天，一朋友发我一网站，看了差点没让我吐血。。。那网站把我开源的webim拿去弄成英文版的，对我这个作者只字不提，还弄了官方网站、博客和BBS。相比之下，反倒弄得像我是冒牌货似的。
既然完全公开了源代码，其实我早就预料到这样事情的发生，尽管我在说明里写上“仅供学习和研究使用，严禁用于任何商业用途”，但是对于很多站长拿这个去做盈利网站我也就默认...&lt;img src=&quot;http://www1.feedsky.com/t1/324261678/JerryQu/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261678/5163833/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261678/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261678/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>未归类</category><pubDate>Mon, 18 May 2009 12:14:51 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/05/%e6%88%91%e7%9a%84webim%e8%a2%ab%e4%ba%ba%e6%97%a0%e8%80%bb%e7%9b%97%e7%94%a8%e4%ba%86%ef%bd%9e/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=133</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/05/%e6%88%91%e7%9a%84webim%e8%a2%ab%e4%ba%ba%e6%97%a0%e8%80%bb%e7%9b%97%e7%94%a8%e4%ba%86%ef%bd%9e/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261678/5163833</fs:itemid></item><item><title>轻松去掉web中flash右键菜单</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261679/5163833/1/item.html</link><content:encoded>&lt;p&gt;今天无意中看到一个画面还不错的webgame，随手右键单击看是否用flash写的（我对flash的判断标准是看右键菜单有无About Adobe Flash Player&amp;#8230;字样）,但是点了居然不出任何菜单。记得之前看到要完全干掉flash右键菜单要用到一些很WS的方法，不知道这个webgame怎么实现的。看了一下它的代码，原来是在flash父容器里做文章：firefox下阻止mousedown默认事件及事件传播；IE下给父容器setCapture。摘录核心代码稍加改造就是下面这个样子：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;NoRightClick&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;pid&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//pid:flash's parentNode id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;pid&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;mousedown&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; == &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;stopPropagation&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//for firefox&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;preventDefault&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ffa500;&quot;&gt;//for chrome&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attachEvent&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;onmousedown&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; == &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;setCapture&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attachEvent&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;onmouseup&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;releaseCapture&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;()&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;el&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;oncontextmenu&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;testContent&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;style&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;width:800px&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #00008b;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;text/javascript&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; var so = new SWFObject(&amp;quot;test.swf&amp;quot;, &amp;quot;t1&amp;quot;, &amp;quot;800&amp;quot;, &amp;quot;550&amp;quot;, &amp;quot;9&amp;quot;, &amp;quot;#000000&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;quality&amp;quot;, &amp;quot;high&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;name&amp;quot;, &amp;quot;t1&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;id&amp;quot;, &amp;quot;t1&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;algin&amp;quot;, &amp;quot;middle&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;AllowScriptAccess&amp;quot;, &amp;quot;sameDomain&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;menu&amp;quot;, &amp;quot;false&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;wmode&amp;quot;, &amp;quot;opaque&amp;quot;);&lt;br /&gt;&amp;nbsp; so.addParam(&amp;quot;pluginspage&amp;quot;, &amp;quot;http://www.adobe.com/go/getflashplayer&amp;quot;);&lt;br /&gt;&amp;nbsp; so.write(&amp;quot;testContent&amp;quot;);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; NoRightClick(&amp;quot;testContent&amp;quot;);&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;经过试验，该代码可以在IE、Firefox和Google Chrome里去掉flash的右键菜单，还是挺方便的。至于这样做有什么意义呢？我暂时还没有想到——但网上搜索一下，有这种需求的人还是不少的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.qgy18.com/lab/noflashmenu/&quot;&gt;演示地址&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261679/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261679/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/04/noflashmenu/feed/</wfw:commentRss><slash:comments>3</slash:comments><description>今天无意中看到一个画面还不错的webgame，随手右键单击看是否用flash写的（我对flash的判断标准是看右键菜单有无About Adobe Flash Player&amp;#8230;字样）,但是点了居然不出任何菜单。记得之前看到要完全干掉flash右键菜单要用到一些很WS的方法，不知道这个webgame怎么实现的。看了一下它的代码，原来是在flash父容器里做文章：firefox下阻止mousedown默认事件及事件传播；IE下给父容器setCaptu...&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261679/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261679/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>跨浏览器</category><category>前端开发</category><category>Flash</category><pubDate>Tue, 07 Apr 2009 00:43:11 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/04/noflashmenu/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=107</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/04/noflashmenu/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261679/5163833</fs:itemid></item><item><title>使用js callback的一个小技巧</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261680/5163833/1/item.html</link><content:encoded>&lt;p&gt;很多情况下，我们需要跨域读取数据，或者是调用别人json格式的api，都要用到js callback这种机制。通常做法是页面上定义一个A方法，再调用第三方的url并且把回调函数名A传过去。这样做固然没什么问题，但有没有更好的方法呢？&lt;/p&gt;
&lt;p&gt;用过jQuery的同学肯定都知道，&lt;a href=&quot;http://jQuery.com&quot;&gt;jQuery&lt;/a&gt;有一个getJSON的方法，只需要两个参数（callback地址和匿名函数）就能正常工作。摘录官方示例如下：&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Gray;&quot;&gt;$.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getJSON&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&amp;amp;tagmode=any&amp;amp;format=json&amp;amp;jsoncallback=?&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; $.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; $&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;&amp;lt;img/&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;attr&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;item&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;media&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;m&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;appendTo&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;#images&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; == &lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;很神奇吧！在这个例子中，我们并不用指定callback函数名，回调也仅仅只是一个匿名函数而已，那么它是怎么完成函数调用的呢？去看下jQuery的源代码，你会发现其实原理很简单。如果懒得看太多代码，看看下面我写的山寨版loadJSON，也能明白。&lt;/p&gt;
&lt;div class=&quot;hl-surround&quot;&gt;&lt;div class=&quot;hl-main&quot;&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;loadJSON&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;callback&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;cn&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;jscallback&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;Date&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;())&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;text/javascript&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;url&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; + &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;cn&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;cn&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;callback&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;getElementsByTagName&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)[&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;s&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;loadJSON&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&amp;amp;tagmode=any&amp;amp;format=json&amp;amp;jsoncallback=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;++&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;){&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;var&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;createElement&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;items&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;[&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;i&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;]&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;media&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;m&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Teal;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;appendChild&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;img&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;})&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.qgy18.com/lab/callback/&quot;&gt;演示地址&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261680/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261680/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/04/js_callbac/feed/</wfw:commentRss><slash:comments>5</slash:comments><description>很多情况下，我们需要跨域读取数据，或者是调用别人json格式的api，都要用到js callback这种机制。通常做法是页面上定义一个A方法，再调用第三方的url并且把回调函数名A传过去。这样做固然没什么问题，但有没有更好的方法呢？
用过jQuery的同学肯定都知道，jQuery有一个getJSON的方法，只需要两个参数（callback地址和匿名函数）就能正常工作。摘录官方示例如下：
$.getJSON(&amp;#34;htt...&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261680/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261680/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>前端开发</category><category>JavaScript</category><pubDate>Fri, 03 Apr 2009 01:04:50 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/04/js_callbac/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=97</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/04/js_callbac/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261680/5163833</fs:itemid></item><item><title>Flash10安全策略更新</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261681/5163833/1/item.html</link><content:encoded>&lt;p&gt;之前写过一篇文章&lt;a href=&quot;http://www.qgy18.com/2008/08/clipboard/&quot;&gt;跨浏览器“复制到剪贴板”的解决方案&lt;/a&gt;，里面讲到在Firefox下如果安装了Flash，就可以利用js调用flash的setClipboard方法来将一段文字写进系统剪切板。但是最近发现，在很多电脑上这种方法已经失灵了。研究了一下，发现是flash10更新了安全策略：新的策略只允许在flash内部调用setClipboard方法，利用js调用无效；当然，如果在flash里添加事件来执行setClipboard是在允许范围内的。&lt;/p&gt;
&lt;p&gt;除了setClipboard的更新外，还有一个比较大的更新就是：FileReference.browse和FileReference.download将只能通过Flash 内容响应鼠标或键盘的操作来使用。也就是说类似于&lt;a href=&quot;http://www.swfupload.org/&quot;&gt;SWFUpload&lt;/a&gt;一类的通过js来打开文件选择框的应用将会无法工作！SWFUpload官方采用&amp;#8221;在SWF中引入一个按钮，用户点击此按钮来触发文件选择对话框的显示&amp;#8221;的方案解决的这一问题。&lt;/p&gt;
&lt;p&gt;Flash的这次安全升级给我的启示：最好不要用一种语言来做本来不属于他做的事(例如利用window.name跨域传输数据等等)，尽管这些Hack在很多情况下很好用，但也最容易因为某次更新升级而失效。&lt;/p&gt;
&lt;p&gt;参考：&lt;br /&gt;
&lt;a href=&quot;http://www.jeffothy.com/weblog/clipboard-copy#comment-123736&quot;&gt;http://www.jeffothy.com/weblog/clipboard-copy#comment-123736&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.v-sky.com/blog/?p=227&quot;&gt;http://www.v-sky.com/blog/?p=227&lt;/a&gt;&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261681/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261681/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/01/flash10%e5%ae%89%e5%85%a8%e7%ad%96%e7%95%a5%e6%9b%b4%e6%96%b0/feed/</wfw:commentRss><slash:comments>2</slash:comments><description>之前写过一篇文章跨浏览器“复制到剪贴板”的解决方案，里面讲到在Firefox下如果安装了Flash，就可以利用js调用flash的setClipboard方法来将一段文字写进系统剪切板。但是最近发现，在很多电脑上这种方法已经失灵了。研究了一下，发现是flash10更新了安全策略：新的策略只允许在flash内部调用setClipboard方法，利用js调用无效；当然，如果在flash里添加事件来执行setClipboard是在允...&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261681/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261681/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>前端开发</category><category>Flash</category><pubDate>Fri, 30 Jan 2009 11:59:35 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/01/flash10%e5%ae%89%e5%85%a8%e7%ad%96%e7%95%a5%e6%9b%b4%e6%96%b0/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=91</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/01/flash10%e5%ae%89%e5%85%a8%e7%ad%96%e7%95%a5%e6%9b%b4%e6%96%b0/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261681/5163833</fs:itemid></item><item><title>用Fiddler来调试web应用</title><link>http://item.feedsky.com/~feedsky/JerryQu/~7055806/324261682/5163833/1/item.html</link><content:encoded>&lt;p&gt;在测试或者优化web应用时，经常需要替换一些静态资源，如css/image/js等。当然，这些工作是在开发环境来做，直接ftp替换也没什么问题。但有的时候仅仅是想调研一下而不想影响环境的稳定，或者想方便的对比两段代码效果，就可以利用一个小工具来完成工作——Fiddler。&lt;/p&gt;
&lt;p&gt;先来简单的介绍下Fiddler(&lt;a href=&quot;http://www.fiddlertool.com/Fiddler2/&quot;&gt;官网&lt;/a&gt;|需要.NET Framework v2.0|MicroSoft出品)：一个集web性能分析、数据监测、自动响应、创建请求四大功能于一身，自带众多实用小工具，支持插件扩展的HTTP调试工具。通过简单的配置代理(IE中全自动、FF中需如下图手动配置)，就可以开始使用Fiddler了。&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-74&quot; style=&quot;border:1px solid #ccc&quot; title=&quot;2009-01-11_151753&quot; src=&quot;http://www.qgy18.com/wp-content/2009-01-11_151753.png&quot; alt=&quot;2009-01-11_151753&quot; width=&quot;344&quot; height=&quot;128&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这篇文章讲的只是利用fiddler来替换静态资源，利用的是它的自动响应功能。选择软件右侧的AutoResponder这个tab，点“Add”按钮来添加一条规则，在Rule Editor里的文本框填上要被替换资源的url，后面的文本框选择源文件就OK了。如下图：&lt;br /&gt;
&lt;img class=&quot;aligncenter size-full wp-image-76&quot; style=&quot;border:1px solid #ccc&quot; title=&quot;2009-01-11_145020&quot; src=&quot;http://www.qgy18.com/wp-content/2009-01-11_145020.png&quot; alt=&quot;2009-01-11_145020&quot; width=&quot;384&quot; height=&quot;33&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-75&quot; style=&quot;border:1px solid #ccc&quot; title=&quot;2009-01-11_144953&quot; src=&quot;http://www.qgy18.com/wp-content/2009-01-11_144953.png&quot; alt=&quot;2009-01-11_144953&quot; width=&quot;522&quot; height=&quot;81&quot; /&gt;&lt;/p&gt;
&lt;p&gt;搞定，就这么简单，现在只要请求被命中，就会被转发到指定的源文件了。修改代码后保存一下F5就能生效，既方便又不会影响到他人。这个功能挖掘下还可以干一些其它有意思的事情：配置Rule时，选择转发404之类的错误码，就可以用来测试Ajax的onError事件；把类似于Http://www.***.com/1.html这样的url转发到本地页面，就可以在本地代码里用Ajax请求www.***.com的内容。由于本地页面是通过Http://www.***.com/1.html来访问，不再有跨域问题了。这在做一个获取数据程序的时候很有用。虽说最后还是要用后端程序来解决跨域问题，但开发前期利用Fiiddler做转发，非常的高效！&lt;/p&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261682/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261682/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.qgy18.com/2009/01/fiddler-web-debugger/feed/</wfw:commentRss><slash:comments>2</slash:comments><description>在测试或者优化web应用时，经常需要替换一些静态资源，如css/image/js等。当然，这些工作是在开发环境来做，直接ftp替换也没什么问题。但有的时候仅仅是想调研一下而不想影响环境的稳定，或者想方便的对比两段代码效果，就可以利用一个小工具来完成工作——Fiddler。
先来简单的介绍下Fiddler(官网&amp;#124;需要.NET Framework v2.0&amp;#124;MicroSoft出品)：一个集web性能分析、数据监测、自...&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/JerryQu/324261682/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/JerryQu/324261682/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>fiddler</category><category>前端开发</category><category>debugger</category><pubDate>Sun, 11 Jan 2009 15:55:42 +0800</pubDate><author>Jerry Qu</author><comments>http://www.qgy18.com/2009/01/fiddler-web-debugger/#comments</comments><guid isPermaLink="false">http://www.qgy18.com/?p=73</guid><dc:creator>Jerry Qu</dc:creator><fs:srclink>http://www.qgy18.com/2009/01/fiddler-web-debugger/</fs:srclink><fs:srcfeed>http://www.qgy18.com/feed/</fs:srcfeed><fs:itemid>feedsky/JerryQu/~7055806/324261682/5163833</fs:itemid></item></channel></rss>