首先,我很遗憾在我的问题中如此通用......我不知道如何通过上传大量代码来详细询问这个问题。
问题:
我们做了很多懒惰的JavaScript加载。
正常使用案例:
上面的用例:不耐烦的愤怒用户grrrr
上面的用例:半不耐烦的用户
所以问题来了,我怎么能阻止网站为不耐烦的用户打破...我一直在避免尝试/捕获,但我应该吗?
我正在使用YUI 3.3,如果有帮助,则使用调度程序插件
答案 0 :(得分:0)
只处理一次点击,你可以用这样的方式标记按钮,以便后续调用click处理程序可以确定加载已经开始,和/或跟踪XMLHttpRequest
对象触发查询并在其上调用abort
,然后触发新查询。
要限制点击处理,有许多解决方案。不知道你的javascript的形式,我估计使用元素存储的最容易实现的方法:
function clickHandler(element) {
// make sure this is not already loading
if (element.retrieve('_waiting_to_load') === true)
return;
element.store('_waiting_to_load', true);
/* do ajax calls */
}
function ajaxCallback(response) {
/* do whatever needs to be done with the response */
// set _waiting_to_load to false
element.store('_waiting_to_load', false);
}
中止/重启负载:
function clickHandler(element) {
// if the loading is pending, start it over
if (element.retrieve('_pending_query')) {
element.retrieve('_pending_query').abort();
}
// don't know what you're using for this... substitute the real thing
var query = new ajaxQueryObject;
element.store('_pending_query', query );
}
function ajaxCallback(response) {
/* do whatever needs to be done with the response */
element.store('_pending_query', false);
}