不完美沙箱 – 变量定义及查找

时隔N久,继续生产,年底实在忙…… 在上一篇发表之后,有网友指出这个沙箱过于复杂,事实上一些更简单的代码也能完成同样的效果,例如: var proxy = { document: new DocumentProxy() }; function(window) { // 开发者提交的代码 }.call(pr …


不完美沙箱 – 模拟全局对象

上一章中,经过对标准的查询、翻阅、解析,终于在绕了一个大圈之后,明白了全局对象的特征,并明确了模拟一个全局对象需要的内容,还为此编写了简单的测试用例。本文将从第1个测试用例着手,放眼与全局作用域的VariableEnvironment、ThisBinding以及windo …


不完美沙箱 – 劫持全局对象

上一章中对需求进行了分析,并对实现方案有了一定的探讨,最终得出从劫持全局对象这一环节入手的结论,而本文将讨论如何劫持这个全局对象。 全局对象,多数会进行Javascript编程的工程师都知道,在浏览器的执行环境中,叫做window,虽然事实上window和全 …


不完美沙箱 – 目的、背景及分析

目的 这将是一个系列的文章,大致由4篇博文组成,内容应该会是这样的: 目的、背景及分析 劫持全局对象 劫持全局对象属性 存在的问题及漏洞 起草这一系列博文的原因有两点,第一自然是因为最近突然有这样的需求,而群里正好也在某个深夜(技术 …


ECMAScript5小试PPT

这是近期一次内部分享的PPT,其中内容主要来自于Franky教主的相关材料,并加入了一些对ECMAScript Harmony的补充资料。同时可以在这里下载到教主的原版PPT。 对于ECMAScript,由于本人也不甚了解,其中一些诡异的问题和隐隐的矛盾(在Harmony中会体现得 …


浏览器渲染原理PPT

这是今天一次内部分享的PPT,其中内容主要来自于Winter大大分享的相关材料,和How Browser Work这一文的一些内容。 由于内部分享是以讲为主,因此PPT并不包含所有内容,仅仅是一个摘要的形式,另有以下几点: 配合PPT中的注解,可以有更好的效果。 相 …


CSS语法简单学习

有这个博文的原因是,最近想做一个CSS的工具,至于工具的作用,先暂时不公开了,有兴趣的朋友可以邮件单独和我联系讨论下。为了这个工具,首先需要有一个CSS解析器,我称之为CSSParser,同时这个解释器和普通的基于Lex的词法分解+LR1的语法分析不同,他并 …


对减少HTTP请求的疑问

教条 根据各种Web性能优化手册,减少HTTP请求这一条始终被放在显眼的位置,其中就包括著名的YSlow和Google Page Speed,两者对这一教条的解释分别是: 80% of the end-user response time is spent on the front-end. Most of this time is tied up …


JavaScript中的对象查找

近期群里常有人提一些简单的问题,比如发一段代码乱七八糟的代码,然后说里面某个变量是什么,比如这里就有个很好的例子: function fn(arg) { console.log(this.arg); console.log(this); } fn(123); var o = { fn: fn }; o.fn(123); …


新动画函数requestAnimationFrame

经典动画 话不多说,首先来个经典的动画函数: function animate(element, name, from, to, time) { time = time || 800; // 默认0.8秒 var style = element.style; var latency = 60; // 每60ms一次变化 var count = time / latenc …