我的jQuery/Javascript代码有问题。所有预期的工作,但一段时间后,该页面变得没有反应,抛出了jQuery的Unresponsive Script
错误。 我正在使用jQuery Library将列表显示为封面。页面在一段时间后变为无响应
此外,在所有后端调用之后,我必须刷新特定的div,因此每次调用后端时都会销毁并重新创建div。
请让我知道什么是下面给出的代码的结构问题:
(请注意,这仅仅是一个重要的方法片段所有这些方法也有写在他们的其他逻辑是不是。显示在这里)。
function showAllData(dataFromServer) {
$('#child').remove();
$('#parent').append($('<div id="child"></div>'));
$.each(dataFromServer.someArray, function(index, item) {
var html = '<li>' + item + '</li>';
$('#child').append($(html));
});
//Attach Event to div
$("#child").on("click", function() {
removeTag();
});
};
$(document).ready(function() {
//got data from server(Spring MVC) in a var 'dataFromServer'
//code not written here
showAllData(dataFromServer);
$("#child").flipster(); //a coverflow library \t
});
$(document).on('submit', '#formSubmit', function(event) {
event.preventDefault();
$.ajax({
url: url,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: true,
cache: false,
data: JSON.stringify({
dataFromClient: dataFromServer
}),
type: "POST",
success: function(data) {
dataFromServer = data;
showAllData(dataFromServer);
$("#child").flipster();
},
error: function(xhr, status, error) {
console.log(xhr.responseText);
}
});
return false;
});
function removeTag() {
$.ajax({
url: 'deleteBooks',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: true,
cache: false,
data: JSON.stringify({
keyword: tag,
dataFromClient: dataFromServer
}),
type: "POST",
success: function(data) {
dataFromServer = data;
showAllData(dataFromServer);
$("#child").flipster();
},
error: function(xhr, status, error) {
console.log(xhr.responseText);
}
});
};
任何想法?
[编辑]:在移动设备上访问网站时会发生这种情况。页面冻结!但是,在使用桌面版时,页面在一段时间后变为无响应,并且出现错误Maximum Call Stack Size Reached
错误。
这可能是因为智能手机的记忆。尽管如此,两个版本都存在问题。
当您尝试在js中运行长循环时,通常会发生无响应的脚本错误。尝试使用某种延迟加载来缩短循环次数。在滚动你可以添加更多的数据。 – chrisgiffy
@chrisgiffy所有数据均以屏幕尺寸显示。所以没有滚动。另外,我没有很多循环,并且所有这些循环都被控制在无限的范围内。我不确定附加事件或类似的事情。 – Jagrut
请参见:[使用时间线进行性能分析](https://开发人员。chrome.com/devtools/docs/timeline) – Roberto