自定义 JS 图像查看器在每次按下“下一步”键后加载速度较慢
custom js image viewer is loading slower after each "next" key press
我构建了一个运行良好的自定义图像查看器,但是每次使用箭头查看下一个或上一个图像时,它的加载速度越来越慢。到第 10 张图像时,可能需要几分钟,甚至冻结。我用来打开查看器的片段与我用来移动到下一个图像的片段相同,每次打开总是快如闪电;只有当我使用箭头键时,它才会变慢。有时.php文件根本不会加载,它只会说"未定义",我相信这是来自 JS 的某个地方?
function image_load(id) {
$('.view').empty().load(image-viewer.php?id='+id, function() {
$(document).keyup(function(e) {
if (e.keyCode == 39) {
var next = $('#next').attr('alt');
if(next != "null") {
image_load(next);
return false;
}
}
if (e.keyCode == 37) {
var prev = $('#prev').attr('alt');
if(prev != "null") {
image_load(prev);
return false;
}
}
});
});
}
因此,下一个/上一个引用它们所包含的函数。它是否以某种方式创建了一个无限循环并减慢了处理器的速度?
根据我的评论,您正在创建一个无限循环,因为您一遍又一遍地重复绑定关键事件。你应该做的是将函数声明与事件处理程序分开:
var image_load = function(id) {
$('.view').empty().load('image-viewer.php?id='+id);
};
$(document).keyup(function(e) {
// Prevent default key actions
e.preventDefault();
// Evaluate pressed keys
if (e.keyCode == 39) {
var next = $('#next').attr('alt');
if (next) image_load(next);
} else if (e.keyCode == 37) {
var prev = $('#prev').attr('alt');
if (prev) image_load(prev);
}
});
相关文章:
- 使用php脚本验证访问者的年龄,并在不刷新的情况下根据结果加载iframe
- 如何在不使用require语句的情况下使用webpack加载目录中的所有文件
- 如何在应用切换点击功能之前,默认情况下在页面加载时隐藏带有特定类的ul-li
- 如何禁用在Bootstrap中不完成一步就转到下一步
- 在新表单上使用JavaScript创建多个共享点项目,但将下一页加载延迟到全部创建
- 下拉重新加载页面,然后检索值
- 将“下一步”和“上一个”按钮添加到较大的图像
- 引导表单向导 - 防止在提交 ajax 响应的每个页面表单出现错误时滚动到下一步
- 按下按钮后加载
- 如何创建一个“下一步”按钮,使用 Java 脚本和 Twitter Bootstrap 切换选项卡
- 如何在单击下一步时使文本移动/更改
- 您如何控制在填写表单时单击下一步时 iOS/Android 将关注哪个字段
- Ember:在没有硬编码的情况下在页面加载时锁定表单“;禁用”;
- 当一次加载所有文件时,是否有来自阵列的10个随机闪存文件显示在页面上?(在javascript中)
- 使用Ajax和Jquery一次加载100个块的Wordpress帖子
- 一次加载HTML对象并多次使用
- Jquery UI选项卡-根据输入字段值,使用“下一步”/“上一步”按钮推进选项卡
- 自定义 JS 图像查看器在每次按下“下一步”键后加载速度较慢
- 获取下一页加载的进度
- Jquery mobile: pagebeforechange直到下一页“加载”才会触发