关于FF与IE的对比以及各自未来

2008年3月15日 – 06:22

半夜里逛51js,看到这么一贴,是关于FF是否会占有一席之地的
看完后回帖居然说新注册24小时内不能回,就转过来先,
原帖地址:
http://bbs.51js.com/thread-64895-1-1.html
==================================================
今天偶然路过就看到了这么一个强帖。
花了进两个小时看完22页之长。
也归功于各方争论有根有据而非只是单纯的水而已。
故注册一下过来发表一下自己的看法

自己用FF也有2年了吧快,也是从一开始的不习惯到了现在的离不开。

扩展方面
FF的扩展确实让人很欣喜,反观IE下确有那么令人厌恶的东西。
IE6插件管理机制是非常糟糕的
到IE7以后才有所好转,出现了类似FF的管理工具
实际上在FF说安全其实是即便出现了恶意的扩展你也可以随意删除
何况扩展我们99.9%的人都是从官网获取的,极大程度上保证了安全性。
而IE的插件确实糟糕到极点,否则也就不会有当年那个万恶的3721了。

推广方面
本来也没有意识到FF的推广有多么严重的问题
虽然偶尔访问些提供破解下载的小站的时候发现,即便我在FF下,他还是提示我的浏览器不安全,要我装FF -_-|||
当然遇到这些站点很多情况下下载地址是必须用IE才能看到的,这个没办法。
FF的推广或许确实让不少人觉得生厌,看了之前的众多回帖(大多数都是一年前的帖子),略有领略。
我感觉FF这种推广方式正如恒源祥的春节广告一样令人厌恶。好在我看不到:)

回到正题
对W3C标准的支持度上,实际上之前有提到说,FF在完全兼容IE的功能后再有自己的功能那才算强。
那我要说,为什么浏览器都不能在完全支持W3C标准后再有自己的功能才算强?
实际上IE6是非常糟糕的,就我现在的认知水平上,IE6的CSS水平非常低。什么伪类支持的极少
居然不带href属性的a就不能有a:hover这个伪类,太没想法了吧!
(虽然他有他的道理,认为不带href就不是链接,只是个普通的锚标。认为除了链接之外所有元素不能有hover事件)
我现在写网页往往不得不专门针对IE6写兼容。而FF,IE7,OP等很少需要专门兼容。
那现在不是讨论是不是要按照标准做的问题了,而是标准在前进,我们是不是跟上了。

当然,即便是FF也没有能够完全执行W3C标准,当然其他浏览器也都没有。
但FF确实是最接近的一个。
前面某位大大说FF里提供的__XXX__的方法,有四条下划线说开发人员脑子坏掉了。
其实显然人家加上下划线是因为那是私有的方法,不推荐公开使用而已。
同样也有人习惯用_XXX的方法一样。
对于更多W3C所没有的功能,其实FF也提供了非常多。
就比如CSS里,FF就提供了很多私有的-moz-xxxx之类的属性,这些显然IE是不可能支持的,FF也没指望这些私有属性会加入到W3C中。
但如果用的比较好的,肯定还是希望W3C采纳并给予正式名称。
当然FF这样用私有属性的原因还是因为不希望在标准未定下来之前过早的将其作为行业标准。
时刻提醒开发人员,这些属性用起来要注意。

再回到最初LZ说的不利于JS发展的问题上
实际上JS包括了ECMAScript,BOM,DOM等3个部分(js高级程序设计上讲的)
相信E4X和DOM基本上没问题,LZ主要厌恶一些IE下私有的BOM不能在FF下使用而讨厌FF吧。
其实大可不必如此。同样FF也有些自己的方法比较好用。
同样还是上面说的,大家都把各自好用的放到W3C里,那以后的浏览器就更好用了。

再回到最最头上的投票,说FF快完了。
本来我毫不担心的,但最近IE8的BETA貌似已经将W3C标准执行到比FF还要高的层面了,
由此我确实担心FF将会淡出。虽然我现在依然每天都离不开FF。
但带给我们程序员的并不是什么IE一统天下的好事,
而是IE内部版本之间的兼容问题。
正如IE7推广了这么长时间了还是不少人用IE6,即便今年2月12日起IE7强制升级。
依然有人禁止或者卸载IE7。

同样的问题也会出现在将来的IE8上,都在讲用户体验的年代里,
如果你的网页访问的第一眼是一团糟,非要叫用户点一下工具栏上的“IE7兼容模式”才能正常显示,
你说你这个网页写出来也叫有良好的用户体验么?

最后说几句
实际上IE自己也是和FF一样不断进步不断向标准靠拢,(实际上IE和FF也不断通过自己的实践改进着标准)
所以从长远来开,按照标准做才是最保险的事情。
实际上LZ在2000年时候就按照W3C标准写出来的代码我敢保证现在还能用!
同样,现在2008年,如果想现在写的代码在2016年也能用
(实际上8年的话,代码生命周期已经够长了,该结束了)
那就按照现在的标准写吧,标准里有的东西以后还是标准,标准里没有的东西未必以后就会成为标准。
所以LZ应该吸取当年的教训,按标准做,那就不会有现在的担忧了。
当然,这已经与FF无关了。

展望,也许过一年IE8出来后,FF等浏览器变得毫无优势,于是IE8又再度如他爷爷IE6一样一统江湖
于是又很长时间不更新,又偏离标准,又出现一个新的浏览器,也许叫EE也许叫GG,也许还是叫FF
于是又有人发出投票,抵制那个新的浏览器……

后记。汗,发现从5点半看完写到现在居然6点20了。。。写太多了。。。天都亮了……
吃完早饭睡觉去了……

&&|| vs ?:

2008年3月14日 – 08:15

前些天,群里小鱼问
<input name="checkbox" type="checkbox" onclick="$(this).is(’:checked’) &&$(’#checked’).slideDown(’slow’) || $(’#checked’).slideUp(’slow’);" />

<p id="checked" style="display: none; " >content </p>;
为什么可以这样写

这个是因为JS等语言的对于&&||之类的运算符截断的作用
即如果&&前第一项为假,后边不用计算就知道整个表达式是假,所以就截断,不进行后面的第二项,再跟||后第三项进行或运算,这样就收起来了
如果第一项为真,那么就执行第二步,第二项返回是JQ对象,也是真,那么又截断,因为对于||或来说,只要有一个真,那整个表达式就肯定是真了。

刚看到的时候觉得好,原来还能这样做啊。但实际上分析下来,也没觉得有多好其实这种运算等同于?:运算,那何必再用这种看似很玄乎的方式呢?

进一步用代码测试
var b;
var a=new Date();
for (var i=0; i<1000000; i++) {
1&&(b=1)||(b=2);
}
alert(new Date().getTime()-a.getTime());

==============================
var b;
var a=new Date();
a=new Date();
for (var i=0; i<1000000; i++) {
1?(b=1):(b=2);
}
alert(new Date().getTime()-a.getTime());

我在IE6下,平均时间的话,用&&||花事件一般在1150毫秒左右,而用?:花1050左右
可见性能上更优,语义上更能理解的用法摆在面前,不用而故弄玄虚,何苦呢~
此文献给“叫我小鱼/;f”~

jQuery UI 冲刺 3月14-15日,2008

2008年3月9日 – 16:33

原文地址:
http://jquery.com/blog/2008/03/07/jquery-ui-worldwide-sprint-march-14-15/

号召大家能够在那两天一起参与活动,测试,编写文档,制作DEMO,修复BUG等等。以便能够进一步将jQuery UI的1.5从alpha ,beta到正式版。

活动方式是,大家可以通过

  • irc: #jquery-sprint on http://freenode.net/
  • wiki: http://docs.jquery.com/JQuerySprint
  • trac: http://dev.jquery.com/

参与

日程安排

  • Kick-off Meeting: March 14th, 9:00 am EDT / 14:00 GMT+1
  • Status Meeting: March 15th, 9:00 am EDT / 14:00 GMT+1
  • Wrap-Up Meeting: March 15th, 6:00 pm EDT / 23:00 GMT+1

我是新人,能帮上忙么?
Absolutely!绝对可以帮忙!如果你以前想参与jQuery或是jQueryUI的贡献,但始终找不到机会,那这次及时最完美的时机。如果你是新手,我们将协助你用你喜欢的方式帮我们。测试,编写文档,制作DEMO,修复BUG,或仅仅是与我们的工作人员交流,提供反馈意见。我们保证能够兼容所有浏览器,包括你的~

活动WIKI:http://docs.jquery.com/JQuerySprint

无论你是新手还是老鸟,只要感兴趣那两天就能参与哦!

注:北京时间是GMT + 8,所以三次会议时间将会在北京时间14日晚上21点,15日晚21点还有16日早上6点HOHO~~最后一场大家都睡觉了吧~~

一起来参与吧~~

jQuery in Action 下载

2008年3月8日 – 20:18

这本书找了很久,可以配合Learning jQuery来看,本书更多介绍了jQuery1.2的内容。
http://shawphy.com/down/Manning.jQuery.in.Action.Feb.2008.zip

增加了EMAIL

2008年3月8日 – 14:33

ゞ智者.千虑 兄提醒说网站上找不到我的EMAIL~
呵呵,发现是啊,忘写了
以前有做过一个EMAIL的图标,现在找不到了,所以就又搜了一下找到了
做了如下的图标

看上去不错。
按照那个网站说的,要求我在用的时候带上那个网站地址,以便更可以方便多人制作
那就带上吧。
http://services.nexodyne.com/email/

jQuery API 1.2 中文版翻译 完成

2008年3月7日 – 04:52

jQuery API 1.2 参考文档
http://shawphy.com/jqueryapi/
离线版下载
http://shawphy.com/jqueryapi/jqueryapi12.zip
================================================
首先感谢 为之漫笔 。他是1.1API的翻译者。1.2的翻译是完全基于1.1的API翻译的,拜一记。本次翻译临近结束时,由他翻译的Learning jQuery 的中文版《jQuery基础教程》即将出版。作为国内jQuery的引路人的他,我由衷地向他表示感谢!

其次感谢 Ross Wan 写的这个仿Visiul jQuery的样式。本次翻译是基于他的英文版制作的。(由于GFW缘故,其博客请通过代理访问)

最后感谢 Cloudream,他也一起参与翻译了工具和AJAX部分。并且加入了英文说明切换功能。

断断续续翻译这个API有段时间了,虽然大部分都基于1.1的API复制过来,但也得校对以及跟官网的DOC进行比较。所以也花了点时间。如果大家使用过程中发现了什么翻译错误,可以找到我博客 http://shawphy.com/来反馈。

同时欢迎利用此版制作其他发行版以方便广大jQuery爱好者。转载请保留版权信息,谢谢。

jQuery新手常见问题FAQ

2008年3月3日 – 12:05

在论坛看到不少新手总是问到一些常见问题,在此整理一下:不定时更新

Q1,在IE下动画会闪一下,效果不理想
A,加上DTD定义即可
比如<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Q2,为什么官方的说
Download jQuery 1.2.3 (15kb, Minified and Gzipped),但我下在下来却有
jquery-1.2.3.min.js   52.8 KB
A,显然,他是用了Gzip了(一种服务器端压缩技术,自己GOOGLE)。而不是官网写错了没更新或者是骗人的~

Q3,js的写法:document.getElementById(’save’).disabled=true;
在jquery中我是这样写的$("#save").disabled = true;  为什么没效果呢

A,这个是典型的问题,其实因为$("#save")出来的其实是jQuery对象,而不是普通DOM对象
这是新手常见的问题。
解决方法有2:
1,用JQ写法,$("#save").attr("disabled","true");
2,转成DOM写法$("#save")[0].disabled=true;
当然,$("#save")[0]也可以写成$("#save").get(0)。他返回的也是DOM元素

Q4,在框架页中,如何操作父窗口的对象
A,引用UPC的方法

没找到很好的方法
只好用DOM方法与jquery方法结合的方式实现了

1.在父窗口中操作 选中IFRAME中的所有单选钮
$(window.frames["iframe1"].document).find("input[type='radio']").attr("checked","true");

2.在IFRAME中操作 选中父窗口中的所有单选钮
$(window.parent.document).find("input[type='radio']").attr("checked","true");

iframe框架的:<iframe src="test.html" id="iframe1" width="700" height="300" frameborder="0" scrolling="auto"></iframe>

IE7中测试通过 回去你自己试试吧

实现的原理其实很简单 就是用到了$(DOM对象)可以转换成jquery对象
==================================================

不过我的方法是
window.parent.jQuery("input[name=validate]").val("&amp;amp;lt;%=Session("GetCode")%&amp;amp;gt;");
这段是来自我博客的自动填写验证码的,有兴趣可分析下我的FOOTER里的那个框架。
其实本质上和UPC的方法是一样的。大家可以借鉴参考

jQuery API 参考文档中文版翻译接近尾声

2008年2月29日 – 12:15

终于快翻完了,还有AJAX部分的一点点了。累啊
大家可以在老地方看到
http://shawphy.com/jqueryapi/
发现什么问题及时过来留言啊

我这还是基于为之漫笔的1.1的API翻译的呢……
(整理、增删、校对等)
远没有他当年的幸苦呢。

传他翻译的《jQuery 基础教程》快要发布了。(就是Learning jQuery)
祝他翻的好吧~~

好了,更多感谢话等正式发布后再写吧~
睡了

jQuery API 继续更新

2008年2月18日 – 11:47

前些天回来,才发现了Cloudream 的留言。赶紧联系之。
现在这个API有了其加入,完整版很快将会与大家见面的了。
这次更新主要是将翻译进行到了CSS部分了。还剩下事件,效果,AJAX,工具四个部分了。
并且Cloudream 连夜制作了英文说明的开关功能,以及给文件瘦身~在此大家感谢一下他~~~

PS,由于翻译方便,所以此功能尚不能完整使用,待完全翻译后即可使用。
PS2,本人说实话不是很喜欢Visual jQuery的样式,感觉moo的文档更简洁漂亮,支持的回帖。。。。

地址依然不变http://shawphy.com/jqueryapi/

==============================

截止至当前发稿时,我又Update了一下,发现Cloudream又更新了。。。。
现在工具部分也完成了。真是膜拜一下夜猫子啊……
我先睡了……各位晚安~o ya si mi….

Edit Plus 3.00 发布

2008年2月16日 – 23:18

Edit Plus 3.00 终于是发布了,但从冗长的What’s New里边看不到激动人心的重大革新,感觉充其量也只能算是从2.31版升级到了2.4版而已。也许EmEditor这个万年BETA王也因此收到鼓动一下子整出个Final了。tracky很厉害,很快就出了中文版了。大家可以到汉化新世纪这里来下载。2.x的注册码依然可以用。附一个霏凡的:

Name:crsky
Code:A779E-5BF58-63RAC-42O59-66RAC

大家装的时候小心插件…… 这个editplus实在很顺手的原因之一就是自动完成功能,可以到这里看看 再转一个,因为找不到作者了。让EP能直接编译和运行JAVA程序。

Tools->参数设置->配置用户工具
   1.添加工具(添加应用程序)
    菜单文字:Compile Java Program
    程序:C:\JDK\bin\javac.exe
    参数:文件名称
    初始目录:文件目录

   2.添加工具(添加应用程序)
    菜单文字:Run Java Program
    程序:C:\JDK\bin\java.exe
    参数:文件名称(不含扩展名)
    初始目录:文件目录

 

   工具组名称可以随便添,比如Debug Java Program。  然后在Tools的下拉菜单中,你就会看见Compile Java Program以及Run Java Program这两个选项,以后你就可以利用ctrl + 1编译和ctrl +2运行程序了

附注:本来这博客是用ScribFire写的,但可惜PJBLOG的API不是很标准,现在发布失败,还害得我写了两遍,郁闷。。。逼我用WordPress去啊……

==============
再注:原来之前发布成功了……但是果然API不够标准,没有正确返回成功的消息。害得我还把之前发的删除了……唉。。。