惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
雷峰网
雷峰网
Google DeepMind News
Google DeepMind News
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
MongoDB | Blog
MongoDB | Blog
V
V2EX
博客园 - 【当耐特】
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
I
InfoQ
Martin Fowler
Martin Fowler
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Hugging Face - Blog
Hugging Face - Blog
B
Blog
V
Visual Studio Blog
D
DataBreaches.Net
C
Check Point Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
F
Fortinet All Blogs

博客园 - 深蓝--广州

AngularJs angular.identity和angular.noop详解 css中clearfix清除浮动的用法及其原理示例介绍 opacity与RGBA透明的区别 CSS3 Gradient javascript语言精粹 严格模式认识 Promise与Defer认识 使用javascript打开一个新页而不被浏览器屏蔽 关于浏览器缓存 ie6下js更新元素display:block后,仍然不显示的hack办法 jQuery jsonp无法捕获404、500状态错误 移动端开发问题整理 修改input的type属性 transform:rotate在手机上显示有锯齿的解决方案 jQuery.validate 常用方法及注意问题 SWFObject推出2使用示例 .NET种Json时对单引号和特殊字符串的处理 自定义枚举类型注释属性,并在程序中获取 Python Win32 Extensions
javascript钩子机制
深蓝--广州 · 2014-08-19 · via 博客园 - 深蓝--广州

钩子机制是这样的,大家按照某一规则写一个方法(这个规则在方法名称上),然后页面加载完之前,统一执行所有的钩子函数。

注意callHooks方法,里面的局部变量s就是钩子函数名称中一定要有的内容。——这是使用钩子的方法!

// 处理钩子的对象  
var hook = (function(){  
    return {  
        timer:null,  
        init:function(){  
            this.callHooks('init');  
        },    
        callHooks:function(init){  
            var s = "hook_" + init + '_event',  
            f = [];   
            for(var h in window){  
                if(h.indexOf(s) != 0) continue;  
                f.push(h);  
            }     
            this.hooksTimeout(f);  
        },    
        hooksTimeout:function(hooks){  
            if(0 === hooks.length){  
                if(this.timer) clearTimeout(this.timer);  
                return;  
            }     
 
            var h = hooks.shift();  
            window[h].apply();  
            window[h] = undefined;  
 
            window.setTimeout(this.hooksTimeout(hooks), 200);  
        }     
    }     
}());  
 
// 钩子1  
var hook_init_event_tpl_html = function(){  
    document.getElementById('test').innerHTML = 'This is HTML!';  
}  
 
// 钩子2  
var hook_init_event_tpl_console = function(){  
    console.log('This is console!');  
}  
 
// 最好在页面加载完之前调用,也就是在window.onload()之前  
hook.init(); 

总结

很多问题,如果大家一起讨论是很有帮助的,在这过程中我们能学到很多东西,我们也可以在这过程中从牛人身上学到很多方法和思维过程,几乎每次的技术讨论会我都有不菲的收获——我不知道这是不是传说中的“头脑风暴”。