我想为我的网站使用 Gridster,但我需要使用“add_widget”命令添加很多小部件。我做了一个测试,我认为“add_widget”功能存在问题:网格越来越慢并且存在内存泄漏。
您可以在此视频中看到:grister 问题视频
但是,正如您在视频中看到的那样,如果我在开头添加小部件(不是使用 add_widget 函数),则没有问题。你能帮助我吗 ?我的代码有问题吗?
提前致谢 !
我想为我的网站使用 Gridster,但我需要使用“add_widget”命令添加很多小部件。我做了一个测试,我认为“add_widget”功能存在问题:网格越来越慢并且存在内存泄漏。
您可以在此视频中看到:grister 问题视频
但是,正如您在视频中看到的那样,如果我在开头添加小部件(不是使用 add_widget 函数),则没有问题。你能帮助我吗 ?我的代码有问题吗?
提前致谢 !
根据我自己的经验,罪魁祸首是使用autogenerate_stylesheet
设置。问题是它会在每次调用时重新生成 css add_widget()
,这绝对会杀死浏览器。此外,gridster 有/有一个错误,样式表被重复,填充了<head>
大量重复的样式规则,使得浏览器变得很困难(这个错误应该是修复的,但我的经验是修复只在特定场景下有效,绝对不是在我的)。
当我使用 gridster 时,我的小部件总是相同的大小。因此,就我而言,我能够生成一次样式表,而无需重新生成它。
我不认为它是公共 api 的一部分,但你可以generate_stylesheet()
手动调用一次方法。
var gridster = $(".gridster ul").gridster({
autogenerate_stylesheet: false,
widget_base_dimensions: [140, 140],
//other options...
}).data('gridster');
gridster.generate_stylesheet({rows: 30; cols: 8});
//freely call gridster.add_widget(...); as many times as you like
由于您只会生成一次样式表,因此您需要确保 gridster 将为足够的行和列生成样式规则以容纳所有小部件,否则一旦超出范围,您将体验到破坏的布局。调用时只需提供行和列的上限generate_stylesheet(opts)
。如果您不这样做,它似乎默认为您的 gridster 实例用于max_rows
and的任何值max_cols
。
好处是通过手动生成样式表,您也完全避免了重复的样式错误。
指数级的放缓将会消失。快乐的网格化。
我知道我在这方面有点晚了,但我遇到了同样的问题,上述解决方案都没有奏效。
但是,我发现我在后端将小部件的大小和坐标生成为字符串而不是整数。
通过确保它们是整数,我设法加快了加载速度。
修复它的最佳方法不是禁用自动生成的样式表,而是在 jquery.gridster.js 中编辑 fn.generate_stylesheet 函数
在函数的最后,就在这些行之前:
return this.add_style_tag(styles);
};
添加这一行:
this.remove_style_tags();
最终结果将如下所示:
this.remove_style_tags();
return this.add_style_tag(styles);
};
这样,每次生成样式表时,都会删除前一个样式表,因此不存在重复问题!