javascript 自己主动绑定JS callback 的方法函数
自己写的一个javascript 智能绑定callback 而且调用运行的函数。主要用于异步请求的 ajax中:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body> <script>
/**
* @author default7@zbphp.com
* @date 2014-10-17
* @description 通过传入的參数获取出函数名称
* @param args
* @returns {string}
*/
function getFunctionName(args) {
var fName = '';
if (typeof args == 'string' && /^[a-zA-Z0-9]+$/.test(args)) {
fName = args;
} else {
var fBody = '';
if (typeof args == 'object' && args.callee) {
fBody = args.callee.toString();
} else if (typeof args == 'string') {
fBody = args;
} if (fBody) {
var m = fBody.match(/function\s+([a-zA-Z0-9]+)\s*\(/i);
if (m && m[1]) {
fName = m[1];
}
}
}
return fName;
} var gCallback = [];
function addCallback(fName, callback) {
if (typeof fName == 'string' && typeof window[fName] == 'function' && typeof callback == 'function') {
if (typeof gCallback[fName] == 'undefined') {
gCallback[fName] = [];
}
gCallback[fName].push(callback);
}
} /**
* @description 运行绑定的函数
* @param args
*/
function execCallback(args) {
var fName = getFunctionName(args);
if (fName && window[fName] && gCallback[fName]) {
for (var i in gCallback[fName]) {
gCallback[fName][i]();
}
gCallback[fName] = [];//仅仅调用一次
}
}
</script> <script>
function a() {
alert('a');
} function b() {
alert('b');
} function c() {
alert('c');
}
function d() {
alert('d');
} function initUser() {
execCallback(arguments); } addCallback('initUser', a);
addCallback('initUser', b);
addCallback('initUser', c); initUser();
addCallback('initUser', d);
initUser(); </script>
</body>
</html>
javascript 自己主动绑定JS callback 的方法函数的更多相关文章
- cocos2dx 自己主动绑定js
依照教程把全部资源下载好后....... 找到cocos2dx project下的tools/bindings-generator/test 发现里面有test.sh , test.ini , 去掉s ...
- JavaScript模板引擎artTemplate.js——两种方法实现性别的判定
template.helper(name, callback) name:必传,辅助事件的名称. callback:必传,辅助事件的回调函数. return:undefined 所谓的辅助事件,主要用 ...
- JavaScript模板引擎artTemplate.js——template.helper()方法
上一篇文章我们已经讲到了helper()方法,但是上面的例子只是一个参数的写法,如果是多个参数,写法就另有区别了. <div id="user_info"></d ...
- JavaScript模板引擎artTemplate.js——template.compile()方法
template.compile(source, options) source:必传,渲染模板的内容. options:可选,通常不传.(其实是我还没研究明白) return:一个渲染函数. 示例如 ...
- 【深入JavaScript】一种JS的继承方法
这些天读了John Resig的<Secrets of JavaScript Ninja>,其中讨论到JS中实现继承的方案,非常有趣,自己探索了一下,形成了笔记,放到这里. 这个方案在Re ...
- cocos2d-html5 javascript 通过C++绑定,调用java方法
1.java中的写法 /* * XConnectPlugin.java * * Created on: 2014年4月30日 * Author: lswdonald9@gmail.com */ pac ...
- JS调用OC方法并传值,OC调用JS方法并传值////////////////////////zz
iOS开发-基于原生JS与OC方法互相调用并传值(附HTML代码) 最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点 ...
- 转载 -- 基于原生JS与OC方法互相调用并传值(附HTML代码)
最近项目里面有有个商品活动界面,要与web端传值,将用户在网页点击的商品id 传给客户端,也就是js交互,其实再说明白一点就是方法的互相调用而已. 本文叙述下如何进行原生的JavaScript交互 本 ...
- C#中在AxWebBrowser控件注入JS脚本的方法
/// <summary> /// 窗体加载 /// </summary> private void JS_Load(object sender, EventArgs e) { ...
随机推荐
- 部署ASP.NET MVC项目
目标:了解部署过程,掌握部署中出现问题该如何处理. 部署网站往往是一件麻烦事,因为在安装部署的过程中,经常有许多步骤要运行,对于许多不太熟悉IIS/SQL的新手来说,部署网站编程一件非常困难且危险的事 ...
- Qt 文件监视器 QFileSystemWatcher
之前有过对Qt的QFile以Text纯文本方式进行读取时的学习,这两天由于实时需要又对QFileSystemWatcher(这个类是干什么用的)进行了学习,发现也是问题很让人头疼. 我想监视一个文件夹 ...
- JQuery插件使用小结
JQuery插件使用小结
- 如何A掉未来程序改
话说有这样一道神题:[集训队互测2015]未来程序·改. 大意是要求写一个简单的C++解释器!这里去掉了C++的许多特性,连简单的break和continue都没有了! 话说NOI被屠了之后,一时心血 ...
- Json也可以这么使
public string GetJSON() { //Json数据 string json112 = "{\"control_info\":{\"imei\& ...
- Computer Transformation(规律,大数打表)
Computer Transformation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/ ...
- [置顶] 63行代码完美实现html5 贪吃蛇游戏
以前也很少关注html5,感觉选择html已经慢慢成为趋势,想了解下.就找了个游戏学习了,写完这个游戏感觉html5和js结合很紧密,如果js不是特别好.估计需要先补习下js,这个只是个人的建议,不一 ...
- stm32内部的CAN总线
功能概述: bxCAN是基本扩展CAN(Basic Extended CAN)的缩写,它支持CAN协议2.0A和2.0B:它的设计目标是以最小的CPU负载来高效处理大量的报文.它也支持报文发送的优先级 ...
- ETC_百度百科
ETC_百度百科 ETC(电子不停车收费系统)
- ajax异步请求实例
1. 问题分析 用户管理显示页面:usermanagement.tpl(也可以说是MVC中的V,即视图) 用户管理数据发送页面:usermanagement.php(也可以说是MVC中的M,即模型) ...