代码改变世界

会导致页面重复请求的情况

2014-01-13 18:25 by straybird, 236 阅读, 0 推荐, 收藏, 编辑
摘要:浏览器刷新一次页面,服务端收到2次请求,可能是有一下情况引起的: 阅读全文

jQuery 源码基本框架

2014-01-01 22:44 by straybird, 155 阅读, 0 推荐, 收藏, 编辑
摘要:抽丝剥茧, 7000+ 行的 jQuery 源码基本可以概括为以下的伪代码(function (window, undefined) { //将 document 封装成 jQuery 对象并缓存 var rootjQuery, //dom ready 事件的委托队列 readyList, //快速地识别 html 标记 如 或者 #id rquickExpr = /^(?:\s*()[^>]*|#([\w-]*))$/, jQuery = function (selector, context) { r... 阅读全文

jQuery 源码细读 -- $.Callbacks

2013-12-11 13:32 by straybird, 253 阅读, 0 推荐, 收藏, 编辑
摘要:$.Callbacks 是 jQuery 提供的可以方便地处理各种回调(callback)列表的类,其源代码是闭包的经典实现。基本原理就是通过在闭包环境内保存一个list = [] 数组用于存储回调列表,并用firing,firingStart,firingLength,firingIndex等标志位来控制闭包的有序执行,下面是最重要的2个内部函数,触发函数 fire 和 添加函数 add。 1 fire = function (data) { 2 memory = options.memory && data; 3 fired ... 阅读全文

Excel等外部程序点击链接会带上IE信息的bug

2013-12-05 19:57 by straybird, 202 阅读, 0 推荐, 收藏, 编辑
摘要:今天碰到一个问题,在Excel内点击链接到默认浏览器Chrome打开,奇怪的是服务端收到的Session一直对不上。查了很久发现这个Excel到Chrome的跳转竟然带上了IE的Cookie 和 UserAgent。此种情况在服务端完全无法识别,所有信息都跟在IE浏览器内部点击一样。当然此时Referer 也是空的。解决的方法是返回给客户端一个空白页面,带上原本的链接做参数,通过前端Javascript 再跳一次。 阅读全文

  与 空格的区别

2013-12-05 00:18 by straybird, 635 阅读, 0 推荐, 收藏, 编辑
摘要:nbsp 是Non-BreakingSPace的缩写,即“不被折断的空格”,当两个单词使用 连接时,这两个单词就不会被分隔为2行,如下面 this isa test! 普通空格经浏览器解析后的字符ASCII码为 32, 经浏览器解析后的ASCII码为 160。这里带来的问题就是有些后端程序或者数据库保存 ASCII 160 时会出现乱码错误,表现为问号(?),在使用jQuery 的.text()函数时尤其要注意控制宽度与距离时,尽量使用样式而非 阅读全文

前端模板文件化jQuery插件 $.loadTemplates

2013-09-08 23:14 by straybird, 1833 阅读, 0 推荐, 收藏, 编辑
摘要:工作中使用前端模板引擎,如 artTemplate、jsRender,来替代拼接字符串。可是直接把模板写在页面上会带来页面臃肿,模板无法重用,与 ASP.NET等后端语言语法冲突等问题。所以将多个模板集成到一个静态文件就很有必要,同时还能利用静态文件的缓存特性。最好还能实现按需加载,不执行渲染的话就不载入模板文件。虽然有对应的工具可以将模板转为 javascript 代码存在 .js 文件中,但是 js 下的模板代码可读性太差,不考虑。于是根据以上需求写了一个jQuery 插件$.loadTemplates(function (window, $) { var tplCache = {}... 阅读全文

客户端渲染的页面能否被搜索引擎完整收录呢?

2013-09-04 16:21 by straybird, 170 阅读, 0 推荐, 收藏, 编辑
摘要:客户端渲染的页面能否被搜索引擎完整收录呢?做个测试Json SEO 测试测试结果:Google 会模拟 js 渲染事件,能做到完整收录 阅读全文

javascript 函数声明问题

2013-06-29 12:16 by straybird, 118 阅读, 0 推荐, 收藏, 编辑
摘要:(function(){ //运行正常 test1(); function test1() { console.log('123'); };})()(function(){ //出错,test2未定义 test2(); test2 = function () { console.log('123'); };})()以下摘录自《Javascript: the good parts》/*function statements are subject to hoisting. This means that regardle... 阅读全文

JavaScript 继承机制小记

2013-06-27 14:47 by straybird, 138 阅读, 0 推荐, 收藏, 编辑
摘要:读《JavaScript: the good parts》, 关于对象继承这块小记一笔:function Base(v){ this.baseValue = v; this.getBaseValue = function(){ return this.baseValue; };}function TestObject(base, c){ var temp = function(){ this.content = c; this.fromBaseValue = function(){ return this.... 阅读全文

豆瓣电影统计

2013-06-10 03:19 by straybird, 181 阅读, 0 推荐, 收藏, 编辑
摘要:Node.js 实现,主要用了 Mongodb。项目地址 :https://github.com/caijiehong/DoubanMoviesBAE 托管地址:http://doumovie.duapp.com/ 阅读全文