掀起抛弃IE6的高潮吧

本来想等到IE8正式发布时再在blog中写段代码,用来提示IE6用户升级到IE8的,不过貌似IE 8已经RTM了,今天又正好看到这个“升级IE6”的活动网站,于是毫不犹豫地就加入了。不过那几个同学写的js代码有问题……代码里面居然有“document.body.appendChild”,在某些情况下会引起极不稳定的IE6crash的……还有超长的字符串相加,也够可怕的……还有……总之呢,这个代码写的非常的不负责任!那几个挂名的tencent的兄弟也稍微用点功嘛,不要只挂名不做事!我自己稍微改了下代码,如果明天有空就发出来给大家共享吧!

不过那个网站写的更新IE6的理由只是从开发者角度讲的,没有告诉用户为什么要去升级IE6,不是很好。

  • 为达到呈现效果达到一致性,新版本浏览器迫不得已向旧版本对齐,从而抑制了正常的发展。
  • 已升级的语言在IE6无法解析以致其用户体验不了升级后的成果。
  • 在开发当中不断地为IE6做出兼容性处理,无疑增加了开发者的工作量,增加了开发成本。

在IE8中继续使用滤镜及IE8的一些CSS扩展属性

很早以前就说过,IE8的标准模式已经不再支持滤镜了,不过IE仍然留了一条后路,你可以在CSS中这样写滤镜:

-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";

当非常遗憾的是,这个属性只有IE8能认识,如果要兼容IE6还有IE7,你必须在这一行的后面继续加上以前的滤镜代码:

-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);

注意:这个先后顺序非常重要!这会影响到IE8兼容模式下的显示效果。

官方blog(IE Blog)的关于在IE8中使用滤镜原文在这里

另外,这里还有IE8的私有CSS属性列表

Mootools常用方法扩展(四)

继续Mootools常用方法扩展,这次是Window类上的扩展,也就是全局函数。

方法:$params

说明:获取页面URL参数。你可以使用任何指定的分隔符,比如’#’,默认为’#’。

Window.implement({
    $params: function(delimiter) {
        ///<summary>
        /// 获取页面URL的参数,返回包含参数的hash对象
        ///</summary>
        ///<param name="delimiter" type="String">参数和URL的分隔符,比如?或者#,默认为#</param>
        ///<returns type="Hash" />
        delimiter = (delimiter || '#').escapeRegExp();

JavaScript奇怪的比较——隐式类型转换

我们先看一下JavaScript中关系运算符的类型转换规则:

关系运算符(<、>、<=、>=)

  • 试图将 expression1 和 expression2 都转换为数字。
  • 如果两表达式均为字符串,则按字典序进行字符串比较。
  • 如果其中一个表达式为 NaN,返回 false。
  • 负零等于正零。
  • 负无穷小于包括其本身在内的任何数。
  • 正无穷大于包括其本身在内的任何数。

所以很容易理解下面这样的比较:

1 < NaN: false
1 >= NaN: false

'a' < 1: false
'a' >= 1: false

但是下面的就很诡异了:

1 < '2a': false
1 >= '2a': false
'2a' < 1: false
'2a' >= 1: false

按照一般的理解,这里的’2a’应该会被转换成2,可是实际上是被转换成了NaN,why?字符串转换为数字,有parseInt()、parseFloat()和Number(),在这里使用的就是Number转换。在用Number()进行转换时,’2a’是不能被转换成数字的。…

Flash自己调整自身大小

需求总是不断变化的,相信有非常多的人也碰到过类似的问题:比如鼠标移到flash上就把flash放大,鼠标移开就缩小,嗯,说了半天其实这个东西就是用来做广告的。

一般的怎么做的呢?无非是在flash里面用ExternalInterface来调JavaScript,用JavaScript来调整swf的大小或者切换另一个swf,或者索性就在swf的上面覆盖一个透明层(貌似要用空白的图片才好使,否则事件还是会跑到swf里面去,而不是给这个层d),然后用这个层来捕捉事件,然后调整swf的大小。

相信很多“挑剔”的人都和我一样,嫌这个方法太麻烦,又不好看。为什么不能直接写在swf里面呢?我也不知道为什么,Adobe没有提供这个接口……不过ActionScript不是可以调JavaScript吗?而且JavaScript也可以写在ActionScript里面,干嘛不从这里打点主意呢?

很好,actionscript.org

jQuery方法扩展:type, toJSON, evalJSON

jQuery居然都没有JSON的decode和encode,精确类型判断也没有,囧……自己动手写吧!不过这些东西在网上都已经有很好的版本了,自己也不用太费脑筋,拿来用吧!类型判断在这里有一段很好的代码:http://lucassmith.name/pub/typeof.html,JSON的decode和encode就直接用Mootools的吧!(不过Mootools里面的JSON.encode方法还不够完美,我作了一些完善。)

/**
* extension of JSON, type for jQuery
* AUTHOR: [email protected]
* LICENSE: http://www.opensource.org/licenses/mit-license.php
* WEBSITE: http://fdream.net/
*/
(function($) {
    // the code of this function is 

【更新】jQuery 1.3.1的VS智能提示下载

谢谢yzty的提醒,jQuery官方说是修改了一些bug,diff了一下代码,发现主要是selector里面的,主要是逻辑上的变化,接口没有任何变化,赶紧从1.3更新到1.3.1吧!

点击这里可以下载可以在Visual Studio 2008中显示智能提示的jQuery版本(jquery 1.3.1)。(发现jquery官方提供的1.3.1的vsdoc貌似是1.2.6的,有几个方法的参数都和1.3.1都不一样,还有部分代码不一样,囧……)

Mootools的1.3什么时候才可以出来啊,太慢太慢了~…

jQuery 1.3的VS智能提示下载

昨天晚上才发现已经出了jQuery的1.3版本,于是下载下来,把原来一个兄弟翻译的1.2.6的文档移植到了1.3中,点击这里可以下载可以在Visual Studio 2008中显示智能提示的jQuery版本。

相关截图:

从官方的Release notes中可以看到,这一个版本的jQuery性能比上一个版本的jQuery提升了好几倍。

其实我还是很喜欢Mootools,它的写法非常的优雅,不过已经很久很久没有更新过了。使用了这么久,发现其中的问题还是很多的,至少我自己已经修改过几次其中的bug了,它远远没有jQuery来得稳定,不知道下一个版本会不会好一些?然而我还不知道下一个版本什么时候会出来………

继续豆瓣插件——显示电子书下载链接

VeryCD的插件发到豆瓣上后,NullPointer说这个不错,要是能再整一个电子书的就好了,我说没有找到很好的电子书下载网站,所以没有办法,他立即给我提供了一个很好的电子书搜索引擎,正好有了第一个插件后,改改就能做第二个插件了,于是就接着写了这个。

当你浏览书籍时,可以在豆瓣右侧顶部显示从Google搜索到的电子书下载信息,点击即可打开相应的下载页面。顶部的有分类搜索结果,点击即可在相应的分类中搜索相关下载信息。默认显示三个搜索结果,点击“显示更多”按钮,可以显示至多十条信息。

截图:

最新版本下载地址:

http://code.google.com/p/plugins4douban/

给豆瓣写了个从VeryCD上搜下载信息的插件

这个灵感来自于师弟freefcw,因为自己也经常泡豆瓣,泡的时候又喜欢跑到VeryCD上搜音乐搜电影,于是就写了这么一个插件。这个插件是干什么的呢?

当你浏览音乐专辑或者电影时,会在右侧顶部显示VeryCD上的相关下载信息,点击即可打开相应的下载页面。顶部的有分类搜索结果,点击即可在相应的分类中搜索相关下载信息。默认显示三个搜索结果,点击“显示更多”按钮,可以显示至多十条信息。

截图如下:

插件下载地址:

http://plugins4douban.googlecode.com/files/VeryCD4Douban-0.2.0.user.js

使用说明(从豆瓣上抄的):