如何在javascript中动态调用事件处理程序并获取其返回值
How to call an event handler dynamically and get its return value in javascript?
我昨天问了一个问题,我接受了答案,但过了一段时间,我才知道解决方案并不完整。问题是:-
插入一个JQuery点击处理程序,在已经注册的点击处理程序之前执行
使用setTimeout(handler,0);
立即返回,我不能使用return setTimeout(handler,0);
。我怎么能同步运行这个handler
,不允许父函数完成,直到这个处理程序完全执行,我得到它的返回值?
我很着急,所以我再问一遍,而不是再编辑一遍。
您不需要使用setTimeout
。如果你不使用setTimeout
,你的处理程序保持同步,你可以在你的函数中返回所有你想要的值。
<script>
function f2() {
alert('Handler declared in HTML')
}
buttons = document.getElementsByTagName('input'); // refine this, later
for (i = 0, max = buttons.length; i < max; i++) {
oldonclick = buttons[i].onclick;
buttons[i].onclick = function() {
alert('Prepend handler');
oldonclick();
}
}
</script>
由于超时是异步的,您需要在超时内设置变量(和/或调用回调函数)。
var x = 1;
setTimeout(function() {
x = 2;
}, 2000);
下面是一个回调函数的例子。如果你想在变量改变后立即对它做些什么,你就需要这样做。
var x = 1;
function callback(x) {
console.log(x);
}
setTimeout(function() {
x = 2;
callback(x);
}, 2000);
这将log
2
一旦超时执行。
根据你想要做的事情,你可能根本不需要超时,这可以避免异步性和很多麻烦。
快速回答:如何改变:
setTimeout(clickhandler, 0);
eval(clickhandler)();
eval(clickhandler);
$(document).ready(function() {
$("input[type=button]").each(function() {
// your button
var btn = $(this);
// original click handler
var clickhandler = btn.data("events").click[0];
btn.unbind("click", clickhandler);
// new click handler
btn.click(function() {
alert('Prepended Handler');
clickhandler();
});
});
});
function f2() {
alert('Handler declared in HTML');
}
现在clickhandler是一个函数,对吧?
参见:jQuery: Unbind事件处理程序,稍后再绑定它们
相关文章:
- 从新的WordPress媒体上传程序获取JS回调
- PHP文件没有't从Javascript应用程序获取$_POST
- 通过web应用程序获取客户端监视器的分辨率
- 使用xPath从Jquery数据验证程序获取输入
- 引导程序获取字形代码
- JavaScript从应用程序获取SharePoint联机列表
- 从Windows8JS应用程序获取仅HTTP cookie
- 从onclick处理程序获取URL
- 谷歌浏览器扩展程序 - 获取字符串中的选项卡内容
- Chrome扩展程序获取DOM文本并在弹出窗口中显示.html然后单击按钮
- Chrome 扩展程序:获取当前网站名称
- 从我的 MVC 应用程序获取会话值到我的 Javascript 中
- 硒网络驱动程序获取表中可见的行号
- 如何从Web JavaScript应用程序获取桌面C#程序中的变量
- 如何通过扩展程序获取(未设置)Chrome中所选文本的背景颜色
- Chrome 扩展程序获取所选文本
- 如何使用 NPM 为您的 Angular 应用程序获取所有依赖项
- 日期时间选择器引导程序获取值并将其用作输入未定义的错误
- Chrome 扩展程序获取元关键字
- 使用 jinja2 和 google app engine 将数据从 python 处理程序获取到 javascript