Javascript 在jQuery中测试一段时间后是否发生了事件
我正在为form faces xforms产品编写一个脚本,该产品通过内置于form faces中的事件进行键控。该事件称为“xforms就绪”。我已将“startTime”定义为文档处于“就绪”状态时立即发生。我想让脚本做的是警告用户,“xforms就绪”发生之前的时间太长,比如说“startTime”已经过了6秒。当发生“xforms ready”事件时,我可以使用以下代码轻松地执行操作:Javascript 在jQuery中测试一段时间后是否发生了事件,javascript,jquery,xforms,Javascript,Jquery,Xforms,我正在为form faces xforms产品编写一个脚本,该产品通过内置于form faces中的事件进行键控。该事件称为“xforms就绪”。我已将“startTime”定义为文档处于“就绪”状态时立即发生。我想让脚本做的是警告用户,“xforms就绪”发生之前的时间太长,比如说“startTime”已经过了6秒。当发生“xforms ready”事件时,我可以使用以下代码轻松地执行操作: new EventListener(document.documentElement, "xfor
new EventListener(document.documentElement,
"xforms-ready",
"default",
function() {
var endTime = (new Date()).getTime();
}
);
但是,该警告希望在定义“endTime”之前发生。所以我想我想要这样的东西:
If 6 seconds has passed since startTime and endTime is not yet defined do X
或者可能更有效:
If 6 seconds has passed since startTime and 'xforms-ready' has not yet happened do X
有人能推荐一种方法吗?您可以使用
setTimeout
来实现这一点。(完成下面的示例。)在jQuery的ready
处理程序中,通过setTimeout
设置要在六秒钟内调用的函数,在xforms ready处理程序中,如果尚未调用,则通过cleartimout
取消该函数
编辑完整的示例(而不是我前面的片段代码),假设xforms ready处理程序在jQueryready
处理程序中也可以:
jQuery.ready(function() {
var xformsReadyTimer;
xformsReadyTimer = setTimeout(function() {
// Too long, show the warning
xformsReadyTimer = undefined;
alert("XForms is taking too long!");
}, 6000);
new EventListener(document.documentElement,
"xforms-ready",
"default",
function() {
if (xformsReadyTimer) {
// Cancel the warning
clearTimeout(xformsReadyTimer);
xformsReadyTimer = undefined;
}
}
);
});
(您可以考虑做那些命名函数,而不是为了简单起见,我使用了匿名的函数。)< /P>