最近flashplayer 10.1升级到了10.1.82.76,由于该版本在安全性控制方面做了许多改进,导致出现了如下的问题。
在Firefox或者Chrome浏览器下,当跨域向远程服务器请求数据时,如果URL使用的是GBK编码的,那么即使在远程服务器上有安全策略控制文件,仍然会引发安全错误。而同样的服务器,使用UTF8或者纯ASCII码做URL则不存在此问题。
也有人发现了相同的问题:http://forums.adobe.com/thread/699750?tstart=0。
此问题已提交至Adobe Flash Player Bug跟踪系统中,等待响应。
因此,建议大家尽量不要使用中文名作为URL路径,能使用英文字符的尽量使用英文字符,虽然有时候是难看一点。
2010-8
最近工作稍微空了点,正好又有幸见到了盛大的在线合并工具,于是一时兴起,把YUI Compressor改造了一下,写了个在线合并JS和CSS的工具,命名为Merpressor,目前已经在工作中使用了。
Mepressor分为两个部分:一部分为公网发布时所用,使用Java编写;另一部分为本地调试时所用,使用轻量和方便的PHP编写。(似乎很绕,简单地讲:Java版本用来公网部署,合并同时压缩代码;PHP版用来本地测试,并不压缩内容。)
在项目中需要合并多个js文件或者css文件时,前端开发者只需修改一个xml格式的配置文件,指定需要合并的文件,通过一定的规则访问,服务器则可自动合并多个js文件,并使用YUI Compressor压缩后返回相应内容,而本地环境下,则会自动导入xml中指定的多个js文件或者css文件,从而使得开发调试和发布一体化,真正做到无缝切换。
注意: 由于合并和压缩需要花费较大的资源和时间,因此在响应速度和并发上会表现较差,在实际使用过程中,需要配合CDN(内容分发网络,一般中大型网站都会采用)使用。当然,你也可以只是把这个工具当合并压缩工具使用。
具体详细的使用方法和安装步骤、安装包下载及源码请移步至Google Code(项目托管地址),欢迎反馈bug及提出...
话说离上一篇日志的发表时间已有漫长的四个多月,实在是对不住读者。客观原因找一下,但是还是要实事求是:一是因为工作实在是太忙太累,无暇顾及;二是BLOG系统太慢,从前到后都需要大概,在开忙之前想修改BLOG系统来着,结果改了一点点就开始忙得不可开交了,于是也中止了。
春节休息了几天,今天上班第一天,最近混twitter混得比较多,经常要压缩URL,以前做了个书签用http://is.gd/压缩,后来发现了全球最短的URL——http://to./,于是决定换API压缩。以前的API可以用GET方式提交数据压缩,但是这个却需要用POST方式提交,因此需要在弹出窗口的同时用POST提交数据。实现起来很简单:在弹出窗口中生成一个表单,把value写到对应的字段中,打开弹出窗口后再用js提交表单即可。
代码如下:
javascript: void(function() {
var p = 'http://to./',
u = location.href,
x = function() {
s = '<form name="f" id="f" action="' + p + '" method="post"><input type="text" name="url" size="9" maxlength="999" value="' + u + '" /></form><script type="text/javascript">document.f.submit();</script>';
w = window.open('', 'W', 'toolbar=0,resizable=1,scrollbars=no,status=1,width=320,height=240');
w.document.write(s);
if (!w) location.href = p + '?url=' + encodeURIComponent(location.href);
};
if (/Firefox/.test(navigator.userAgent)) {
setTimeout(x, 0)
} else {
x()
}
})()
使用方法很简单...
一种很常见的写法:
document.write('<scr'+'ipt src="http://a.com/b.js" type="text/javascript"></scr'+'ipt>');
直到被杀毒软件提示有恶意代码才发现这也是不安全的,汗……
那就只好改成这样了:
(function() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'http://a.com.cn/b.js';
document.getElementsByTagName('head')[0].appendChild(s);
})();
大家可能看完性能测试才会有兴趣,下图是一个较全的性能测试结果,大家可以在这里测试,大家可以自己跑一跑看(由于加载的东西较多,请耐心等待一会儿再点start按钮)。

正式开始twitter了,我的twitter地址是:http://twitter.com/xushengs,欢迎加入!
由于twitter的字数有限制,因此把长URL压缩成短URL是非常非常必要的。不过,你是不是因为压缩的工作而烦恼,要复制地址,然后粘贴,然后再复制,再粘贴?用书签来替你完成前面的工作吧!
把下面的这个地址拖到你的书签栏就OK了:
如果不能拖到书签栏,请新建一个书签或者把当前页面加入收藏,然后更改这个书签的属性,把URL地址更改为:
javascript:void(function(){var r='http://is.gd/api.php?longurl='+encodeURIComponent(location.href),x=function(){if(!window.open(r,'ShortURL','toolbar=0,resizable=1,scrollbars=yes,status=1,width=320,height=240'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})()
使用方法(需允许弹出窗口):
- 打开你要进行URL压缩的页面
- 点击这个书签按钮
- 在弹出的窗口中全选:Ctrl + A,复制:Ctrl + C
本来想把这个Ctrl + A也去掉来着,要写的代码有点长,后来发现还有问题是[http://is.gd]is.gd提供的这个API输出的是纯文本,不是HTML DOM,要做也很麻烦,先这样吧,已经省了一半的工作了。
有这么一个题目,说bt其实也不bt,为了重点突出其中的意图,特意加上了括号:
var a = (++Math.PI);
var b = (Math.PI++);
var c = Math.PI = (++Math.PI);
var d = Math.PI = (Math.PI++);
var e = Math.PI = (Math.PI + 1);
执行完后,a、b、c、d、e的值分别是什么呢?如果学校里学的C语言基础好的话,应该可以知道答案。你不妨先写下答案,我们再来看看ECMA的规范。
在ECMA-262中,对于Math.PI的说明是这样的:
15.8.1.6
The number value for π, the ratio of the circumference of a circle to its diameter, which is approximately 3.1415926535897932.
This property has the attributes { DontEnum, DontDelete, ReadOnly }.
很清楚,ReadOnly,那么你给Math.PI赋值是没有用的。
再看看关于前自增(Prefix Increment)...
在IE下,获取Param的时候有个诡异现象(不知道算不算bug)。为了清晰起见,下面用最简单的HTML和JavaScript来说明。有这么一段HTML(head部分是标准的head,doctype使用xhtml-transitional的DTD):
<body>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="100%" height="100%">
<param name="movie" value="Test.swf" />
<param name="quality" value="high" />
<embed src="Test.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="100%" height="100%"></embed>
</object>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="100%" height="100%">
<param name="movie" value="Test.swf" />
<param name="quality" value="high" />
<embed src="Test.swf" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="100%" height="100%"></embed>
</body>
</object>
现在,我们分别用两种方式来获取第一个object(swf)的param参数个数...
Processed in 1.0469018 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
2010-8
用户中心
日志分类

最新日志
最新评论
统计信息






友情链接