如何优化JavaScript脚本的性能作者:ShiningRay @ Nirvana Studio
随着网络的发展,网速和机器速度的提高,越来越多的网站用到了丰富客户端技术。而现在Ajax则是最为流行的一种方式。JavaScript是一种解释型语言,所以能无法达到和C/Java之类的水平,限制了它能在客户端所做的事情,为了能改进他的性能,我想基于我以前给JavaScript做过的很多测试来谈谈自己的经验,希望能帮助大家改进自己的JavaScript脚本性能。
语言层次方面
循环
循环是很常用的一个控制结构,大部分东西要依靠它来完成,在JavaScript中,我们可以使用for(;;),wh ...
- 10:01
- 浏览 (52)
- 评论 (0)
- 分类: JAVASCRIPT
2008-08-18
几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
关键字: http://cache.qihoo.com/wenda.php?do=snap&m=b7b098bf551ace1dc
AJAX是web20的基石,现在网上流行几种开源的AJAX框架,比如:jQuery,Mootools,Dojo,Ext JS等等,那么我们到底在什么情况下该使用那个框架?以下是一组摘抄的数据:
Ajaxian在2007年底对Ajax工具进行了调查,部分调查结果见下表(其中数字为调查者使用该工具的百分比,详细的请参见网页):http://ajaxian.com/archives/2007-ajax-tools-usage-survey-results
Prototype jQuery Ext Script.aculo.us Mootools YUI JSON Dojo Backbase
3 ...
- 16:53
- 浏览 (63)
- 评论 (0)
- 分类: JAVASCRIPT
一.使用css缩写
使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。css缩写的主要规则请参看《常用css缩写语法总结》,这里就不展开描述。
二.明确定义单位,除非值为0
忘记定义尺寸的单位是CSS新手普遍的错误。在HTML中你可以只写width="100",但是在CSS中,你必须给一个准确的单位,比如:width:100px width:100em。只有两个例外情况可以不定义单位:行高和0值。除此以外,其他值都必须紧跟单位,注意,不要在数值和单位之间加空格。
三.区分大小写
当在XHTML中使用CSS,CSS里定义的元素名称是区分大小写的。为了避免这种错误 ...
- 13:08
- 浏览 (18)
- 评论 (0)
- 分类: JAVASCRIPT
http://www.163show.cn/blog/index.html
应用PNG图片的透明或半透明的特性能做出非常漂亮的网页来。Firefox和Opera对PNG的支持非常的好,都是IE却无视PNG图片这一特性的“存在”,虽然IE7已经支持都是IE6还是不行。查了一些资料,基本解决了这一问题,准备应用到PJskin上。
虽然有让IE6支持PNG透明背景的JS程序,都是不是很方便,还是用CSS来实现的好。使用到的就是:
IE5.5+的AlphaImageLoader滤镜
语法:
filter : progid:DXImageTransform.Microsoft.AlphaImageLo ...
- 12:56
- 浏览 (67)
- 评论 (0)
- 分类: JAVASCRIPT
引言
前些天在对公司原有的 web 应用进行改版时遇到一个问题,当时需要从原有的应用中提取出一部分,用一个更为通用的来进行替换,并且仍然保留原有的应用接口。原有的应用属于 news.mycompany.com 域,而新应用将被部署到 upload.mycopany.com。当我试着从新的域向 news.mycompany.com 传递数据时,在前台遇到了浏览器返回的“拒绝访问(Access Denied)” 的错误信息,通过参考在 google 中查到的大量英文资料找到了问题的症结,并通过指定两个域中页面的 docment.domain 属性使问题得到了部分解决。后来一时兴起在 google ...
- 15:49
- 浏览 (34)
- 评论 (0)
- 分类: JAVASCRIPT
网页中超长文字的断行问题2006/9/25 at 01:50 · PHP, XHTML&CSS
这个应该是比较常见的问题了,通常是连续的一长串无空格的半角字符所引起的,比如比较长的超链接就很有可能把你的页面撑开。网上常见的解决办法就是使用css属性 break-word:break-all; ,但是这个只对IE浏览器有效。
下面介绍一种办法,可以保证各浏览器的兼容。
<wbr>标记,它的作用是建议浏览器在这个标记处可以断行,只是建议而不是必定会在此处断行,还要根据整行文字长度而定。因此只要在连续的文字中间适当的插入若干<wbr>标记就能解决断行问题。
我最初看到这个解决办 ...
- 10:11
- 浏览 (27)
- 评论 (0)
- 分类: JAVASCRIPT
对于instanceof和typeof,以前偶尔的用到过,特别是typeof用到的相对更多一些,今日研究ext源码,很多地方都用到了instanceof,突然觉得他们两个有些相似但也应该有他们区别,网上看了一些文章,对它们之间的关系有了一定的了解。
instanceof和typeof都能用来判断一个变量是否为空或是什么类型的变量。
typeof用以获取一个变量的类型,typeof一般只能返回如下几个结果:number,boolean,string,function,object,undefined。我们可以使用typeof来获取一个变量是否存在,如if(typeof a!="undefine ...
- 16:35
- 浏览 (40)
- 评论 (0)
- 分类: JAVASCRIPT
JavaScript的对象总有4类:
脚本对象:如Object,Math,Date 等。
浏览器对象:window,document,location等。
Dom对象:对dom操作的对象,document,Node等
自定义对象:程序员自身定义的对象。
本次介绍程序员如何定义对象,对象是由类创建出来的,在Java中,我们可以通过语法:
类 obj=new 类();
来定义对象,那么在JavaScript中如何定义对象呢?
在JavaScript中,我们首先讨论一下JavaScript的一个重要特性:动态 ...
- 15:25
- 浏览 (39)
- 评论 (0)
- 分类: JAVASCRIPT
4.15. options 参数对象
AJAX操作中一个重要的部分就是 options 参数。 本质上没有options类。任何对象都可以被传入,只要带有需要的属性。通常会只为了AJAX调用创建匿名类。
Table 16. options 参数对象
属性 类型 Default 描述
method Array 'post' HTTP 请求方式。
parameters String '' 在HTTP请求中传入的url格式的值列表。
asynchronous Boolean true 指定是否做异步 AJAX 请求。
postBody String undefined 在HTTP POS ...
- 17:41
- 浏览 (64)
- 评论 (0)
- 分类: JAVASCRIPT
1. Prototype是什么?
或许你还没有用过它, prototype.js 是一个由Sam Stephenson写的JavaScript包。这个构思奇妙编写良好的一段兼容标准的一段代码将承担创造胖客户端, 高交互性WEB应用程序的重担。轻松加入Web 2.0特性。
2. 通用性方法
这个程序包里面包含了许多预定义的对象和通用性方法。编写这些方法的明显的目的就是为了减少你大量的重复编码和惯用法。
2.1. 使用 $()方法
$() 方法是在DOM中使用过于频繁的 document.getElementById() 方法的一个便利的简写,就像这个DOM方法一样,这个方法返回参数传入的i ...
- 17:39
- 浏览 (74)
- 评论 (0)
- 分类: JAVASCRIPT
SCRIPT 标记
用于包含JavaScript代码.
语法
属性
LANGUAGE 定义脚本语言
SRC 定义一个URL用以指定以.JS结尾的文件
windows对象
每个HTML文档的顶层对象.
属性
frames[] 子桢数组.每个子桢数组按源文档中定义的顺序存放.
feames.length 子桢个数.
self 当前窗口.
parent 父窗口(当前窗口是中一个子窗口).
top 顶层窗口(是所有可见窗口的父窗口).
status 浏览器状态窗口上的消息.
defaultStatus 当status无效时,出现在浏览器状 ...
- 17:37
- 浏览 (47)
- 评论 (0)
- 分类: JAVASCRIPT
问:为什么Session在有些机器上偶尔会丢失?
答:可能和机器的环境有关系,比如:防火墙或者杀毒软件等,尝试关闭防火墙。
问:为什么当调用Session.Abandon时并没有激发Session_End方法?
答:首先Session_End方法只支持InProc(进程内的)类型的Session。其次要激发Session_End方法,必须存在Session(即系统中已经使用Session了),并且至少要完成一次请求(在这次请求中会调用该方法)。
问:为什么当我在InProc模式下使用Session会经常丢失?
答:该问题通常是由于应用程序被回收导致的,因为当使用进程内Session时,Se ...
- 17:35
- 浏览 (60)
- 评论 (0)
- 分类: JAVASCRIPT
原文作者:Douglas Bowman
原文出自:A List Apart
中文翻译:54player.com nobita
在CSS中,一个经常被人们讨论的先进之处即背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果。根据CSS2.0当前的规定,每一个背景图像都需要各自的HTML元素。在许多情况下,典型的标记已经为一般的接口组件提供了多种元素以供我们使用。
标签导航栏就是其中的一个例子。过去,我们频繁的使用这些标签,并已成为了一种非常流行的站点导航方式。现今,在CSS已被广泛支持的前景下,我们可以为我们站点制作出更高质量和更好外观的标签导航栏来。你也许知道CSS可以用 ...
- 19:15
- 浏览 (54)
- 评论 (0)
- 分类: JAVASCRIPT
Document 对象中有一个cookie 属性,那Cookie 是什么呢?
“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称为 Cookie。”—— MSIE 帮助。一般来说,Cookies 是 CGI 或类似,比 HTML 高级的文件、程序等创建的,但是 javascript 也提供了对 Cookies 的很全面的访问权利。
先了解Cookie 的基本知识。
每个 Cookie 都是这样的:<cookie名>=<值>
<cookie名>的限制与 javascript 的命名限制大同小异,少了“不能用 javascript 关 ...
- 16:28
- 浏览 (72)
- 评论 (0)
- 分类: JAVASCRIPT
本文介绍如下几个方面的内容:
1.如何创建数组
2.如何对数组进行操作(添加,删除,读取)
3.数组常见方法和属性
如何创建一个数组,一般地根据初始化设定简单分为3种:
1.单纯创建数组:
var arr=new Array();
要点:用new关键字创建数组对象Array(),Array()对象是一个本地类,可以用new创建一个对象后使用
2.创建数组的同时规定数组大小:
var arr=new Array(10);//这里就创建了一个初始化大小为10的数组
注意:当使用数组大小操作初始化大小时,数组会自动被撑大,不会像C语言那样发生错误.动态增长是js数组的一个性质.另外,js中支持 ...
- 16:26
- 浏览 (239)
- 评论 (0)
- 分类: JAVASCRIPT
一、检测浏览器的名称
问题:
不同的浏览器对javascript的标准支持也有不同,有时希望脚本能够在不同的浏览器上都能运行良好,这时需要对浏览器进行检测,确定其名称,以针对不同的浏览器编写相应的脚本。
解决方案:
使用navigator对象的appName属性。
比如,要检测浏览器是否为IE,能够这么做:
var isIE = (navigator.appName == "Microsoft Internet Explorer");
document.write("is IE?" + isIE);
对于FireFox,navigator对象的a ...
- 13:06
- 浏览 (98)
- 评论 (0)
- 分类: JAVASCRIPT
一.今天的事件
事件是DOM的一部分,在DOM Level1中未定义任何事件,在Level中定义了一小部分子集,完整的事件是在Level3中规定的,该标准在2004年最终定案。
Mozilla的事件模式与DOM标准最为接近,IE成为唯一一个对DOM事件模式缺乏良好支持的浏览器。
二.事件流
事件流意味着在页面上可有不仅一个,甚至多个元素响应同一个事件。
1. 冒泡型事件
IE上的解决方案的绰号为冒泡的技术。冒泡型事件的基本思想是,时间按照最特定的目标到最不特定的事件目标的顺序触发。
IE6.0中,<html/>元素也可接收冒泡的时间。
2. ...
- 11:23
- 浏览 (142)
- 评论 (0)
- 分类: JAVASCRIPT
1.event.srcElement问题
在IE下,event对象有srcElement属性,但是没有target属性;
在Firefox下,even对象有target属性,但是没有srcElement属性.
我们可以这样解决:
使用obj(obj = event.srcElement ? event.srcElement : event.target;)来代替IE下的event.srcElement或者Firefox下的event.target.
2.上面提到了event,在两种浏览器中也存在问题
window.event只能在IE下运行,而不能在Firefox下运行,
这是因为Fi ...
- 11:21
- 浏览 (51)
- 评论 (0)
- 分类: JAVASCRIPT
在很多语言的学习中,“事件”都是一个比较难理解,但是又是一个很重要的概念。javascript中的事件处理也是一样,正因为有了事件处理,才会出现Ajax拖动的效果。本文就讨论一下JavaScript中的事件处理,读过之后,您就会知道,很多Ajax框架实现拖动效果的原理了。
一、 IE Event对象
(一)IE Event对象的主要属性和方法
在IE中有一个专门负责事件处理的对象Event,这个对象负责对事件的处理,含有很多的属性和方法,通过这些方法和属性的调用,就能完成很多的事件处理。
type:事件的类型,就是HTML标签属性中,没有“on”前缀之后的字符串,例如“Click”就代 ...
- 11:18
- 浏览 (73)
- 评论 (0)
- 分类: JAVASCRIPT
1.性能上的比较
如果&&的第一个运算数是false,就不再考虑第二个运算数,直接返回false;如果||的第一个运算数是true,也不再考虑第二个运算数,直接返回true。&和|运算符却不是这样的,它们总是要比较两个运算数才得出结果,因而性能上&&和||会比&和|好。
由于&&和||可能不考虑第二个运算数,所以我们应尽量避免在它们右边使用具有副作用(赋值、递增、递减和函数调用)的表达式,除非非常清楚自己再做什么。
if((a == null) && (b++ >10)) stop(); //b++递增运算可能不被执行
if((b++ >10) && (a == null)) stop( ...
- 11:15
- 浏览 (43)
- 评论 (0)
- 分类: JAVASCRIPT
1. document.form.item 问题
(1)现有问题:
现有代码中存在许多 document.formName.item("itemName") 这样的语句,不能在 MF 下运行
(2)解决方法:
改用 document.formName.elements["elementName"]
(3)其它
参见 2
2. 集合类对象问题
(1)现有问题:
现有代码中许多集合类对象取用时使用 (),IE 能接受,MF 不能。
(2)解决方法:
改用 [] 作为下标运算。如:document.forms("formName") 改为 document.forms["formName"]。
...
- 11:14
- 浏览 (144)
- 评论 (0)
- 分类: JAVASCRIPT
关于获取各种浏览器可见窗口大小的一点点研究
<script>
function getInfo()
{
var s = "";
s += " 网页可见区域宽:"+ document.body.clientWidth;
s += " 网页可见区域高:"+ document.body.clientHeight;
s += " 网页可见区域宽:"+ document.body.offsetWidth + " (包括边线和滚动条的宽)";
s += " 网页可见区域高:"+ document.body.offsetHeight + " (包括边线的宽)"; ...
- 11:07
- 浏览 (113)
- 评论 (0)
- 分类: JAVASCRIPT
在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arguments
Arguments
该对象代表正在执行的函数和调用它的函数的参数。
[function.]arguments[n]
参数function :选项。当前正在执行的 Function 对象的名字。 n :选项。要传递给 Function 对象的从0开始的参数值索引。
说明
Arguments 是进行函数调用时,除了指定的参数外,还另外创建的一个隐藏对象。Arguments是一个类似数组但不是数组的对象,说它类似数组是因为其具有数组一样的访问性质及方式,可以由arguments[n]来访问对应的单个参数 ...
- 16:23
- 浏览 (63)
- 评论 (0)
- 分类: JAVASCRIPT
http://www.cftea.com/c/618.asp
http://www.iwant2do.com/linker_listSource.do?groupid=12
- 17:41
- 浏览 (67)
- 评论 (0)
- 分类: JAVASCRIPT
- 浏览: 7065 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最新评论
-
Flex 模块化应用程序开发
给我回mail,lmhdlcode@gmail.comthanks a lot
-- by lmhdlcode -
Flex 模块化应用程序开发
有2个问题啊,望赐教。1)在.actionScriptProperties文件中 ...
-- by lmhdlcode -
搜索引擎技术之核心揭密
这也叫核心?
-- by fredzhang






评论排行榜