国外最受欢迎的30款免费工具

免费通信工具

随着时代的发展,各种辅助工具迅速发展,使我们日常生活发生了翻天覆地的变化,工作中我们更有效率,生活中我们更方便快捷。在国外,免费工具和开源软件发展迅猛,在工作生活方面应用广泛,下面我们来看一下国外最受欢迎的开源软件和免费工具都有什么,也许对于您会有帮助。

基于Web的免费通信工具和开源软件

1. Gmail

Gmail是谷歌在线电子邮件(Web邮件)服务。可以免费注册电子邮件账户进行访问,其主要提供包括存储,搜索,内置聊天,移动接入,语音聊天,垃圾邮件过滤器等很多实用功能。而且谷歌一直在不断的推出新的功能和Gmail服务。

2. Meebo

Meebo是网上沟通渠道和平台相结合的一个单一的服务。通过Web浏览器在Meebo内的Messenger列表可让您访问所有主要的网络(AIM,雅虎,Windows Live Messenger中的Google Talk,ICQ,Jabber)。

3. Opera邮件

Opera邮件是一个免费的内置到Web浏览器的电子邮件客户端。 Opera可以提供邮件组织,索引和邮件进行排序等功能。它还集成了RSS feeds和一个不错的垃圾邮件过滤功能。

4. Thunderbird3.1

Thunderbird3.1是免费的可定制消息的电子邮件客户端。Thunderbird能帮助个人管理在线通信,包括电子邮件,即时通讯和社交信息。Thunderbird支持Windows,Mac OS X和Linux系统。

 

事物、文档管理工具

基于Web的免费开放源码的协同调度工具

5. GanttProject

国外学生用的最多的开源软件。

GanttProject是一个开放源码的项目调度和管理的工具。该软件可用于人们之间沟通交流。 GanttProject支持Windows,Mac OS X和Linux系统。

6. TimetoMeet

TimetoMeet是一个基于网络的调度工具,用户之间可以约定一个时间与他人见面讨论工作或项目。 TimeToMeet可以通过Outlook,iCal自动同步您的日历行程和约会地点。

7. EditGrid

EditGrid在线电子表格服务,提供了许多跟Excel相同的功能。 EditGrid允许你将你的电子表格共享协同并且发布放到网上。

8.谷歌Docs

谷歌Docs是一个基于Web的免费软件,可以用软件处理文件,电子表格,演示文稿,图纸。还可以从您的桌面上传文件,让朋友从互联网上访问文件。

9. PDFCreator

PDFCreator是一个开源的程序,在任何Windows程序中都可以创建的PDF文件。该软件可以通过Windows应用程序的打印机打印。

10. ZOHO Writer

ZOHO Writer是一个在线文字处理器,可以随时在协作组内创建文件。 Zoho还支持更新到博客功能,也可以将谷歌文档或者网上的文件下载到桌面上。

 

幻灯片演示工具

基于Web的免费的开源的幻灯片演示工具

11.嵌入式Google文档

嵌入式Google文档,您可以创建幻灯片。还可以添加文本,图像,视频,它能够更直接地为您演示幻灯片,Google文档支持包括PPT在内的所有文件格式。

12.Zoho Show 2.0

Zoho Show 2.0是一个在线创建演示文稿工具。 Zoho的显示提供了主题,剪贴画,加上能够拖拽和拖放等功能,是一个非常简单的应用程序。

 

基于Web的免费的开源的任务和时间管理工具

13.谷歌日历

谷歌日历是一个可以帮助你发送邀请,跟踪回函的桌面应用程序,如与Microsoft Outlook,苹果iCal和Mozilla的Sunbird同步。

14.Remember The Milk

Remember The Milk是一个可以在线帮助管理任务的免费的网络服务。Remember The Milk可以创建和管理任务,设置截止日期,还可以通过电子邮件或Instant Messenger设置提醒。也可以创建列表和共享,向其他联系人发送和发布任务。

 

数学建模工具

基于Web的免费开放源码的数学建模工具

15. GNU Octave

GNU Octave是一个开源的用于数值计算的高层次的解释语言。它提供了线性和非线性问题的数值解,并执行其他数值实验的能力。GNU的倍频提供了大量的图形 数据可视化的操纵能力。当前版本是3.4.0版本,一个倍频程的Windows二进制分发和一个八度的二进制分发为Sun系统做出做出了巨大贡献,它是适 用于Linux,Mac OS X和其他项目。

16.Graphing Calculator from e-Tutor

Graphing Calculator from e-Tutor是一个在线的Web工具,可以进入X功能,使用一个标准的数学格式。在网站上可以使用图形计算器。

17. Mathway

Mathway是一个解决计算问题的工具。 Mathway可以解决以下科目:包括基础数学,准代数,代数,三角,初等数学,微积分与统计。

18. Sage

Sage也是一个免费开源数学软件套件系统。软件是专为研究和教学工作用的。

 

共享软件

基于Web的免费开放源码的共享软件

19. NoteMesh

NoteMesh是一个免费的在线服务软件,允许在同一个群体的人彼此分享经验。它的工作原理是创建一个单独的群,用户可以编辑。可以自由发布自己的感受或分享经验。

20. WebNotes

WebNotes(精简版版本)是一个免费的在线服务,能在浏览器的网页上添加注释,该操作自动保存,再次访问时候将直接访问该页面。重要的网页和PDF文件可以通过电子邮件,Twitter与他人共享。

 

免费文档工具

免费Web的文档工具

21. EasyBib

EasyBib是一个免费的网络工具,它提供自动的书的目录和参考文献。该服务允许您搜索并且建立书目,然后导出或打印。

22.谷歌应用

谷歌应用是一个多功能地服务。搜索引擎可以帮助你找到参考文章,也可以作为一个计算器,定义取景器,还可以当转换工具来用。

23.谷歌新闻搜索

谷歌新闻搜索(存档搜索选项),是一个很好的研究历史或时事的工具。

24. Bookfinder

Bookfinder是一个基于搜索的网络资源,可以以最优惠的价格找到新的或用过的图书。

25.SparkNotes

SparkNotes是一个Web资源工具呢,旨在帮助解决书中遇到的问题和论文的写法等问题。

26.SpellJax

SpellJax是一个检查的工具。可以帮助你对文字(或粘贴)进行拼写检查。

27.Webopedia

Webopedia是一个免费的在线搜索计算机、互联网等技术定义的数据库。

 

开源电子学习平台

教育工作者的开源电子学习平台

28.Claroline

Claroline是一个开源电子学习和电子工作平台,能建立网上课程和管理Web上的学习和工作。该软件包是基于PHP /MySQL的,并已被翻译成35种语言。它适用于Windows,Unix,Linux和Mac OS X操作系统。

29.Dokeos

Dokeos在线学习套装软件。它是开源的,并提供免费下载。该平台提提供很多功能:包括多媒体,创建测试,论坛,会议和视频会议。

30.Sakai

Sakai是一个基于Java的电子学习平台,提供网上教学,学习,研究和教育所需的所有工具。那些想测试自己的硬件和操作系统的人可以下载并安装一个已编译的二进制工具进行测试。

——————————————————-

摘自:http://os.51cto.com/art/201111/304882.htm。具体每一工具,google其名便可。

常见网站攻击手段

1. SQL注入

原理

通过把SQL命令插入到Web表单递交或输入URL请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

防范

1)过滤一切输入数据;

2)对于拼接的SQL语句(或避免之),进行再次安全检查

3)应用的异常信息尽量避免显示在客户端(或换为其它友好信息)

4)严格限制连接数据库用户的相应权限,帐号的安全管理等

 

2. XSS攻击

又叫CSS(Cross-Site Scripting)跨站脚本。

原理

恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,其代码会被执行,从而达到恶意攻击用户的特殊目的。可以分两类:

1)来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。

2)来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或者寻找非目标机以外的有跨站漏洞的网页。

XSS属于被动式的攻击,而且利用站点内的信任用户,所以还不好利用。

防范

编码输出的数据。如果过滤HTML代码(PHP可以有htmlspecialchars函数)。

 

3. CSRF(Cross-site request forgery) 跨站请求伪装

原理

通过伪装来自受信任用户的请求来利用受信任的网站的一种攻击手段。例如:一个网站用户A可能正在浏览聊天论坛,而同时另一个用户B也在此论坛中,并且发布了一个具有用户A的银行链接的图片消息。用户B编写了一个在A的银行站点上进行取款的form提交的链接,并将此链接作为图片tag。如果用户A的银行在cookie中保存他的授权信息,并且此cookie没有过期,那么当用户A的浏览器尝试装载图片时将提交这个取款form和他的cookie,这样在没经用户A同意的情况下便授权了这次事务(用户B笑了)。

防范

1)将持久化的授权方法(例如cookie或者HTTP授权)切换为瞬时的授权方法(在form中包含秘密信息、用户指定的代号作为cookie之外的验证)。

2)对于Ajax请求,“双提交”cookie。 如果某个授权的cookie在post之前正被JavaScript代码读取,那么限制跨域规则将被应用。 如果服务器需要在post请求体或者URL中包含授权cookie的请求,那 么这个请求必须来自于受信任的域(其它域是不能从信任域读取cookie的)。

3)CSRF虽然是web应用的基本问题(不是用户的问题),但用户通过在浏览其它站点前登出站点或者在浏览器会话结束后清理浏览器的cookie亦可预防。

 

4. CC攻击

CC=Challenge Collapsar,表示要向黑洞发起挑战

原理

基于应用层的弱点进行攻击,发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击,也可以归为DDoS攻击的一种。简单举例,对于某一个翻页页面,如多并发高频次的进行大量翻页请求,因查询无法立即完成,资源无法立即释放,会导致数据库请求连接过多,导致数据库阻塞,网站将无法正常打开。也正因为应用层的弱点,取决于各自应用平台的开发能力,因此难以具有通用性的防护方案,这也是CC攻击没有很好的防护产品,非常容易得手的原因。

防范

1)优化代码。如尽量使用缓存,减少数据查询的开销;减少复杂框架的调用;及时释放资源等。

2)限制手段。如禁止一些客户端类型的请求(一些不良蜘蛛),执行间隔时间,权限等。

3)完善日志。记录和分析访问日志,处理好单一ip密集访问,特定url同比请求激增等情况。

虽然想阻止CC攻击很不可能;但多思考,多设想潜在的危险,还是可以做很多有效的防护的。

最具创新的公司

1.Codecademy:最简单的JavaScript学习方法
公司名称:Codecademy
创始人:Zach Sims和Ryan Bubinski
地点:纽约
资金来源:从Union Square Ventures等机构筹资250万美元
创新性:Codecademy让JavaScript学习变得极为方便,充满乐趣。它的第一课是教你把的名字写在引号里,然后再逐步加大难度。现在很多人都想创业,但又找不到高科技人才。在这样的情况下,Codecademy具有巨大的潜力。

2.Kaggle:1.7万名博士级科学家组成的网络,互相帮助解决难题
公司名称:Kaggle
创始人:Anthony Goldbloom
地点:旧金山
资金来源:在第一轮融资中从Index Ventures、Khosla Ventures、SV Angel等机构处筹集到1100万美元资金。
创 新性:Kaggle上有1.7万名博士级科学家,NASA、Delloite和密歇根大学都曾向这个网络求助,他们解决了复杂的问题,并创建了获奖模型。 Kaggle把世界上一些最聪明的人聚集在一起。他们可以给世界带来巨大的进步——从艾滋病研究到外层空间暗物质探索。

3.Skillshare:让任何人都可以给大家授课
公司名称:Skillshare
创始人:Michael Karnjanaprokorn 和Malcom Ong
地点:纽约
资金来源:迄今为止筹集约370万美元,投资者包括Spark Capital 和 Union Square Ventures。
创新性:Skillshare把每个地址都变成一个教室,让每个人都能成为老师或学生。Karnjanaprakorn表示:“教师在学校里教的东西往往是过时的或不相关的。真正的内行和参加实地工作的人可以在Skillshare上教你东西。”

4.Sphero:用你的智能手机控制机器球
公司:Sphero
创始人:Ian Bernstein 和Adam Wilson
地点:巨石城
资金来源:在第二轮融资中筹集倒500万美元。
创新性:Sphero参加过TechStars孵化项目,它的产品可用于宠物和军事领域。
“在一个网球大小的球状体里装有一个小机器人,你可以控制这个球的移动。它是宠物狗和猫的好玩具。8岁大的孩子也会很喜欢它。此外你还可以想像一下如何把它用在军事领域中。”

5.Quora问答网站:由专家而不是白痴来回答问题
公司名称:Quora
创始人:Adam D”Angelo和Charlie Cheever
地点:加州帕洛阿尔托
资金来源:以8600万美元的估值融资 1100万美元
创新性:Quora对互联网搜索和答案有新的构想。它创建了一个平台,让可信的业内专家乐于分享他们学到的知识,并回答普通人的问题。
这是用户可以在web上从他们钦佩和尊重的人那里获得意见的唯一地方。

6.Dwolla:快速发展的移动支付解决方案。每月转账3000-5000万美元,让用户彻底摆脱信用卡。
公司名称:Dwolla
创始人:Ben Milne
地点:爱荷华州得梅因
资金来源:曾从The Veridian Group 和The Members Group筹集100万美元。目前正在进行另一轮融资。
创 新性: 乍看上去Dwolla和它的竞争对手Square 和 PayPal没有什么不同——其实并非如此。PayPal和Square都使用信用卡来转 账,Dwolla则完全绕过了信用卡。它直接连接到银行账户(这一点很好,因为用户永远不能透支),将钱转移给收款人。收款人甚至可以是没有Dwolla 帐户的Facebook朋友。因为它不使用信用卡,也就没有高昂的交易费用。无论你是转1美元还是100万美元, Dwolla每次转账都只收取 25美 分。这个由12人组成的公司每月转账3000-5000万美元,全部都来自爱荷华州。

7.ZocDoc:在线预约医生
公司名称:ZocDoc
创始人:Nick Ganju、Cyrus Massoumi 和 Oliver Kharraz
地点:纽约
资金来源:至今为止共筹集9500万美元;今年夏天曾在第三轮融资中从DST Global筹集到 5000万美元。
创 新性:ZocDoc提供了一种简单的在线预约医生的服务,你甚至可以在最后一分钟进行预约。该公司的创始人说,绝大多数25岁以下的纽约人都使用 ZocDoc。它目前在11个城市开展业务,并且正在迅速扩张。ZocDoc目前有70 万用户,预约医生530万次。用户可以免费使用这项服务。每个医 生每月需要付费250美元。你在病倒后给医生打电话,然后发现医生没有空,这是非常令人沮丧的事情,ZocDoc则可以帮你消除这种烦恼。ZocDoc也 是纽约最大的初创公司之一,它的估值接近十亿美元。

8.BankSimple(现已改名“Simple”)把你所有的银行帐户合并成一个,让你不用为其他账户付费。
公司名称:BankSimple,现已改名“Simple”
创始人:Alex Payne、 Josh Reich 和 Shamir Karkal
地点:纽约布鲁克林,现已搬迁到波特兰
资金来源:8月时融资1000万美元,迄今为止共筹集1300万美元。
创新性:如果你有多个银行账户,每家银行都会向你收取费用。BankSimple将你所有的帐户合并成一个,帮你减少相关费用。这是一个具有惊人潜力的移动银行解决方案。

9.TaskRabbit:按需供应劳动力。带来就业机会和额外收入。
公司名称:TaskRabbit
创始人:Leah Busque
地点:加州旧金山
资金来源:最近融资500万美元。
创 新性:TaskRabbit获得了很大的上升势头,它根据雇主的需要来提供劳动力,制造了就业机会和额外收入。就像青少年在空闲时间当保姆赚钱一样,人们 也可以在自己的空闲时间里做点跑腿工作来获得相应的报酬。ABC晚间新闻称TaskRabbit是美国就业危机的一个解决方案。

10.H. Bloom是一个鲜花订购服务。它为酒店、公寓以及个人提供鲜花。
公司名称:H.Bloom
创始人:Brian Burkhart 和 Sonu Panda
地点:纽约
资金来源:迄今为止总共筹集800万美元,其中包括今年夏天从Battery Ventures筹到的470万美元。
创新性:鲜花凋谢很快,酒店和公寓楼等大场地需要有源源不断的鲜花供应。H.Bloom有它的价值。普通人也可以在H. Bloom上订购鲜花。比如健忘的丈夫可以提前输入结婚纪念日,H. Bloom到时就会自动送花给他们的妻子

———————————————–

偶然手机浏览网页复制下来,出处不详,见谅。

MySQL使用索引的情况

索引是数据库优化很常见和重要的手段之一。 复习下在MySQL数据库中索引的使用情况。

一 使用的情况:

1)在复合索引中(即多列组成的索引),最左边的列才被使用索引。 比如order(order_id, user_id, user_name)中,为 (user_id, user_name)列创建索引,当按user_id查询SELECT * FROM order WHERE user_id = 2011,此时WHERE条件不是用的user_id和user_name复合索引,索引仍然会被使用,这也是索引的前缀特性。 但如果按user_name进行查询,索引则不可用。

2)在LIKE查询中,后边如果是常量且%不在首字符,索引才被使用。 如: 索引字段 LIKE ‘2011%’(索引被使用),但 LIKE ‘%2011’(索引不被使用)。

3)‘索引字段 is NULL’ 的情况将使用索引。

4) MEMORY/HEAP表的查询使用‘=’的条件下索引才起作用。

二 不使用的情况:

1)复合索引中,使用不是第一列的其它列进行查询时,不使用索引。

2) 使用索引比全表扫描更慢时不用索引。 比如 ‘id > 1 OR id < 10’(id是索引字段)。

3) MEMORY/HEAP表WHERE条件不使用‘=’进行索引列。

4) 在OR条件中,OR前的列是索引列,OR后的列不是索引列,那么索引列无效。

5)LIKE条件中%在第一位,不使用索引。

6)索引列如果是字符类型,对字符常量查询如果无引号,索引无效。比如 SELECT * FROM order WHERE user_name = 2011(user_name是索引列),此时查询有效,但索引无效(进行全表扫描)。 user_name=’2011’则索引被使用。

另外,我们通过SHOW STATUS命令了解各个SQL的执行频率(show status like ‘Handler_read%’查看索引的使用情况),EXPLAIN分析各个SQL执行计划,这涉及优化方面,再探讨。

互联网的天生本质

互联网,即广域网、局域网及单机按照一定的通信协议组成的国际计算机网络。从互联网用户的角度来总结互联网的天生本质,最主要有以下几点:

(1)开放与共享。信息和资源在互联网上具备开放性和共享性,这是互联网最根本的精神和特性。海量信息和资源在网络上互通互连,在所有的互联网用户之间相互开发和分享,如网站中的个人主页、网络硬盘、留言板、相册、论坛或博客中的资讯、文字、图片、视频、软件等内容,当然还包括人类以这些内容为载体所传承的知识、思想和价值。

(2)自由与平等。全球、全国网民参与、对接,包括信息获得、内容发布、业务交流、建立圈子等,在互联网的自由、平等的空间中,大家欢迎每一份真诚的交流,容纳每一份不伤害别人的个性,保护每一种渴望成功的愿望,现实生活中的权威、荣耀、等级,在Internet上被平等成一样的ID(IDentity,身份标识号码,互联网中的账号)。

(3)互动与虚拟。在互联网上,在平等的ID背后,没人知道电脑那边的会是谁。人不可能一世独立,每个人都很脆弱,人与人之间都需要交流互动,相信每一份成功都需要喝彩,相信每一次失败都需要告慰。互联网的互动与虚拟性也是互联网发展最突出的两大特性,很明显地表现在1M即时通信和网络游戏这两项在互联网经济占了很大比例的应用中。

通过以上这些站在用户角度去理解的互联网本性,我们逐渐清楚地看到,用户才是真正的上帝。中国互联网和国外同行,都是在为各自的网民服务。网民需求才是真正主导互联网发展走向的力量。创新是鱼,消费者是水,有多大的水池,就能养多大的鱼。

以上摘自《互联网之达芬奇密码》一书。

简单的MySQL数据库安全策略

1)操作系统。在其OS(操作系统)上创建某一用户来专门运行MySQL,这样可以对此用户的权限加以限制来提高安全性。试想,如果在运行类似UNIX的OS,以root用户的身份运行MySQL服务器,这样可能赋予了一个MySQL普通用户读写OS任何地方的文件的权限。防止非管理员用户访问WEB服务器中的mysqladmin程序。另外,把MySQL服务器建立在Firewall(防火墙)后(这样可终止未授权主机的连接)或改变其默认端口,都可进一步提高其安全性。

2)密码。这是大家都比较熟悉的。务必为所有用户设置复杂的密码。如果需要在脚本文件保存密码(如db_connect.php),必须小心把此文件保存在WEB文档树结构以外,并且只能由特定的用户进行访问。

3)用户权限。利用MySQL权限系统,为每个用户配置其所配对的权限(即必须的,最少的,例如类型表只授予SELECT权限,订单表中只授予INSERT权限等),如果不是绝对需要,不要将GRANT,PROCESS,FILE,SHUTDOWN和RELOAD等权限授予任何非管理员的用户。建立用户时,其连接主机的权限也得加以确认,应该避免在主机名中使用通配符,还有在host表中使用IP地址而不是域名(这样可以在DNS位置避免错误问题)。

4)WEB问题。务必过滤来自用户的所有数据。

一些事

不经意间,这年已过了大半,掂量掂量拥有了什么 — 还是一声“喟叹”而已。

很忙,又很闲 — 每天写着机械性的code,还得唠叨地“指导”着,不用思考,不用学习,却掉了不少肉。 — 哈哈,减肥一直是我的梦,可惜的是憔悴的显老了。

其实,还是因为迷茫。

还是有点可记忆的事。遇上了两本好书《黑客与画家》和《浪潮之巅》。“Michael Buble – Home” 真得很好听。

世界宽广,生命长,我想走慢一点…

Java工程师可能不知道的那些FE潜规则

写了一个多月JavaScript,感觉如今可不比几年前只有IE6的年代,而且过去只是用JS写个Ajax或者是简单的表单验证,可如今写一个稍微复杂点的小应用,要兼容所有浏览器,才发现真是太难了,难怪FE是一个独立的工种,有别于我们这些Java工程师了。

1 首先是最简单的select标签,就有诸多不兼容:

A、 cloneNode方法,对于非IE浏览器没有问题,对于IE浏览器,我遇到的问题包括:
1)option selected的会clone不过去,然后会将第一个option作为selected值
2)事件clone也会有问题

B、Readonly:对于IE6,可以通过以下方法将select设为readonly:
obj.onbeforeactive=function(){return false}
obj.onfocus=function(){obj.blur();
obj.onmouseover=function(){obj.setCapture();}
obj.onmouseout=function(){obj.releaseCapture();}
对于其他浏览器,我采用的是元素替代法,动态创建一个input标签,把值赋给它,然后将select隐藏。

C、select的z-index对于IE6无效,网上有很多关于这个讨论,JQuery采用一个iframe搞定

D、动态添加option的方法不同,这个网上一搜一大堆

E、对于onclick和onchange的响应不同,在FF下可以在onclick select时动态读取option值然后构建option,然后选中一个值后执行onchange事件,但是IE下不能这样做。

2 css对offsetWidth之类的理解不同 – http://newleague.iteye.com/blog/765535

3 对于vertical-align baseline的理解不同 – http://w3help.org/zh-cn/causes/RD1016

4 设置背景色
element.style.backgroundColor
在firefox下想改变颜色,必须先设为null,再设为其他颜色才行,即先取消原来的颜色。
在IE下,想取消颜色,必须设为”才行,而换其他颜色,无需先去掉之前的颜色。

5 不同浏览器去padding的理解不同

6 不同浏览器对强制换行和强制不换行的理解不同 – http://www.cftea.com/c/2009/01/QPDZU40MNW8FYYG3.asp
最恶心的是对于IE6,如果是<td><span>我是蚊子</span></td>,那么在td上写了word-break:keep-all依然无效,必须在span上也写。

7 获得head节点的方式不同
在Firefox下可以用window.head,而所有浏览器都兼容的方式是document.getElementsByTagName(‘head’)[0]

8 往head上添加css code的方法不同,也就是动态添加<style>标签。
IE下可以用var style=document.createStyleSheet();style.cssText=cssCode;而有文章说,在Windows上的IE,用createStyleSheet返回的是styleElement的styleSheet,而在Mac上返回的是styleElement自己。在其他浏览器下需要document.createElement(‘style’); 然后还有区分是否具有styleSheet属性。

9 对于onchange事件,firefox浏览器可以注册在table,div等组件上,然后通过冒泡,拦截input,select等发出的事件,而IE不行,必须绑定到相应的组件上

10 将input设为readonly=true,其依然会响应keypress,keyup,keydown,onblur事件

11 IE和非IE对于停止冒泡和取消默认行为的方法不同

12 大家都知道IE和非IE在动态添加事件时使用的方法不同,IE是attachEvent,其他是addListener,然后参数也不同。更重要的是如果一个控件绑定了多个function,他们绑定和执行的顺序是不同的,IE是跟绑定顺序相反,其他是跟绑定顺序相同

13 获得当前事件不同,一个是window.event一个是直接接受event

14 FF下执行offset系列非常慢,但是IE下比较快,而IE的改变CSS的执行非常慢。
Firefox6比Firefox3.6速度快的多,相差好几百倍(针对一个400行*50列的表格的JS处理)

15 如果大量动态改变css,那么使用document.createDocumentFragment,然后将需要修改样式的Dom获取出来appendChild到这个临时的fragment上,修改完css后再append回去即可,这样性能能差好几百倍。

16 浏览器加载网页时,顺序读取html,遇到外部js链接会读进来,然后按顺序执行,边解释边执行,而对于外部css,图片等则是启动另外的线程连接服务器去获取。
IE对于CSS引入有限制,我没试过,但有篇文章讨论:http://blog.csdn.net/ydshang/article/details/4158211

17 表格定位某一行,可以通过改变scrollTop来实现,当然如果出现了滚动条的话

18 IE的Dom用完要记得释放,可以在unload方法中,否则会出现内存泄露

19 unload方法在各个浏览器里各不相同,我之前的文章里有介绍。http://sslaowan.iteye.com/blog/1128209

20 我知道了为什么FE最喜欢的浏览器是FF,最讨厌的是IE6,恨不得IE6去死,其他IE也不怎么样。但是Chrome,Opera也各有各的bug

21 Ajax当使用同步模式时,如果访问的链接是错误的,那么FF会在控制台报错,而IE会直接弹出个对话框,然后就崩溃了。

22 FF支持document.getElementsByClass等方法,IE不支持,可以自己写一个。

23 trim方法在IE和FF下不同,需要自己写一个,可以用正则表达式

24 动态设置元素的css class在IE和非IE浏览器下也不同

25 有时本地字体库会影响你的字体,大小等显示,但是有时甚至会影响你的布局

26 字符串也可以使用><等符号比较大小,但是是字符串比较,不要被骗了

27 JS中this问题非常让人困惑

28 判断浏览器可以有很多方法,主流是两大类,agent判断法和特性法,后者好像更推荐

29 JS是面向对象语言,对象.属性=值 只影响当前对象,而对象.prototype.属性则影响整个类。非IE浏览器可以覆盖DOM对象的类方法,但是IE不行。

30 getComputedStyle,获得外部添加的css,FF支持,IE不支持,具体看这篇文章 http://www.jb51.net/article/16128.htm

31 IE和Chrome支持outerHTML方法,其他浏览器没有。相关讨论:http://walsh.iteye.com/blog/261966http://stackoverflow.com/questions/1700870/how-do-i-do-outerhtml-in-firefox

32 还有一个特悲剧的,IE下会把document.[formname.]控件Id当成那个控件,如果把一个控件比如input的id设为了submit,那么form.submit()就会报错。

33 如果利用全角空格进行布局时,Firefox支持,而IE会去除只剩一个,但是是在某些情况下的,具体看这篇文章:http://w3help.org/zh-cn/causes/BT1025

34 透明度:
filter:alpha(opacity=0); /* IE */
-moz-opacity:0.3; /* Moz + FF */
opacity: 0.3;

至于用不用var的区别,undefined和null的区别,Ajax构建的不同方式,这些一般的Java程序员都了解了。

很多Java程序员也会使用JS框架,比如JQuery,Extjs和Dojo,她们都帮我们屏蔽了很多兼容性问题。Dojo提供了Java一样的面向对象机制。

抛砖引玉,你还遇到过什么陷阱,那些FE都知道,而我们Java工程师不知道?

原文:http://sslaowan.iteye.com/blog/1156214