Latest Publications

从另外两道题说起

最近貌似流行做Javascript题,Dmitry A. Soshnikov这又出了几道题-The quiz,还可以自我评分,有兴趣的可以去试试看自己可以得几分。本文主要挑了2道比较绕的题目来说几个知识点:

1. Javascript中的”,”(逗号)操作符

2. Javascript中”;”(分号)的重要性

3. Javascript中with块中的作用域

下面请看题目。

(更多…)

Firefox3.5 CSS Sprites Bug

今天猛然发现在Firefox3.5下,如果CSS中对同一个背景图片使用了多次,则对同一个图片会发送多次请求,也就是说没有缓存背景图片。因此,这也就造成了CSS Sprite在Firefox3.5中失效了,具体的例子可以围观这个测试页面

(更多…)

如何减少浏览器的repaint和reflow?

文本内容主要包括以下几点:

  1. 什么是repaint/reflow?
  2. 什么情况下会触发浏览器的repaint/reflow?
  3. 浏览器自身所作的优化
  4. 如何优化你的脚本来减少repaint/reflow?

(更多…)

Javascript预解析相关一则

先来看一段代码:

alert("a" in window);    /*true    -    1*/
if( false ){
    var a = 1;
}
alert("b" in window);    /*false    -    2*/
if( false ){
    b = 1;
}
alert("b" in window);    /*false    -    3*/
alert("c" in window);    /*false    -    4*/
if( true ){
    c = 1;
}
alert("c" in window);    /*true    -    5*/

以上代码片段是在全局作用域下定义的,对于第一个例子,Javascript在预解析的时候已经将变量a的声明添加到了活动对象中(具体可参考Javascript的“预解析),于是在运行时 “a” in window 为true。

(更多…)

DOM操作琐碎知识点

1. parentWindow 与 defaultView
parentWinow是IE下document的特有属性,表示的是document所在的window对象
defaultView DOM Level2中引入的属性,document.defaultView指向默认的AbstractView。

2. 各种坐标以及维度属性

365152B7C20550F25A0575CEF593D6A4

 

(更多…)

浏览器环境相关检测技术介绍

本文主要介绍以下几项的检测方法:
1. Javascript版本信息
2. Cookie是否开启
3. 用户的屏幕分辨率
4. Flash版本号以及浏览器是否开启了Flash拦截功能
5. 浏览器字体大小是否正常(某些浏览器缩放后会导致页面布局混乱)
6. 浏览器的Ajax功能是否正常,包括Get方式和Post方式
7. 浏览器的图片浏览功能是否正常
8. 用户的网络速度
通过对以上几个问题的检测,开发人员能够比较全面的了解目标浏览器的整体环境。
(更多…)

Google Closure Compiler压缩优化规则初探

前不久,Google发布了一系列与WEB开发相关的工具,包括Closure Compiler、Closure Library与Closure Templates,其中Closure Compiler被Google称之为Javascript 优化器(Javascript Optimizer)。通过编译,Compiler可以使代码获得更佳的紧凑性和更高的性能。它不仅能删除无用的代码,同时还会重写和压缩代码以获得更好的下载和运行速度。此外,它还能检查代码中的语法、变量引用以及变量类型,并在发现问题后给出警告。
(更多…)

Javascript的“预解析”

1. Javascript在执行前会进行类似“预解析”的操作:首先会创建一个当前执行环境下的活动对象,并将那些用var申明的变量设置为活动对象的属性,但是此时这些变量的赋值都是undefined,并将那些以function定义的函数也添加为活动对象的属性,而且它们的值正是函数的定义。
(更多…)

客户端实现准确的服务器时间同步

一、问题描述

需要解决的问题很简单,就是如何在页面上比较准确的显示服务器时间。目前比较常用的方法就是根据基准时间使用setTimeout或setInterval来计算最新的时间,这样的问题在于setTimeout与setInterval的时间精度比较低,经测试一分钟大概能相差几秒(与电脑性能以及运行的任务也相关),这样的精度在某些需求下是无法满足的。除此之外,如果要获得比较准确的时间可以定期与服务器进行校准,只是这样实现的成本大一些。

(更多…)

浏览器们的原生JSON对象

一、什么是JSON

JSON是Javascript Object Notation的简写,单从字面上看可以翻译成:Javascript对象标记,在Javascript中可以使用JSON语法来描述一个对象。json.org是如下介绍JSON的:

(更多…)