延迟小部件 js 的执行,直到页面完全加载
Defer execution of widget js until page is fully loaded
我有一个带有一些自定义 js 的小部件:
class ImagePreviewWidget(ClearableFileInput):
...
class Media:
css = {
'all': ('css/image-preview-widget.css',)
}
js = ('js/image-preview-widget.js', )
自定义的js使用jQuery,是独立加载的,所以我需要把我的模块初始化包装在:
window.onload = function() {
cusomJsStart();
};
这不是很干净(一个问题是我可能会干扰其他 window.onload
调用)。有没有更好的方法来加载小部件javascript?
编辑
澄清一下:这个问题的重点是脚本运行时jQuery
尚未加载,脚本加载顺序不在我的控制范围内。
没有什么比纯粹的Javascript更好的了!或者你可以像这样使用 JQuery :
$(function(){
cusomJsStart();
});
但是由于 JQuery 源文件加载,使用此方法您的页面会更重。
或者您可以将 cusomJsStart()
放在 HTML 文件的末尾,但它一点也不干净!
你的选择是对的。
您应该使用 addEventListener
:
而不是设置 window.onload
window.addEventListener("load", customJsStart);
(如果您需要支持 IE<9,则需要一些后备代码 - 请参阅上面的 MDN link)。
如果您可以告诉 Django 将 defer
属性添加到您在 Media
class 中传递的脚本,那就更好了,但它还不支持。
我有一个带有一些自定义 js 的小部件:
class ImagePreviewWidget(ClearableFileInput):
...
class Media:
css = {
'all': ('css/image-preview-widget.css',)
}
js = ('js/image-preview-widget.js', )
自定义的js使用jQuery,是独立加载的,所以我需要把我的模块初始化包装在:
window.onload = function() {
cusomJsStart();
};
这不是很干净(一个问题是我可能会干扰其他 window.onload
调用)。有没有更好的方法来加载小部件javascript?
编辑
澄清一下:这个问题的重点是脚本运行时jQuery
尚未加载,脚本加载顺序不在我的控制范围内。
没有什么比纯粹的Javascript更好的了!或者你可以像这样使用 JQuery :
$(function(){
cusomJsStart();
});
但是由于 JQuery 源文件加载,使用此方法您的页面会更重。
或者您可以将 cusomJsStart()
放在 HTML 文件的末尾,但它一点也不干净!
你的选择是对的。
您应该使用 addEventListener
:
window.onload
window.addEventListener("load", customJsStart);
(如果您需要支持 IE<9,则需要一些后备代码 - 请参阅上面的 MDN link)。
如果您可以告诉 Django 将 defer
属性添加到您在 Media
class 中传递的脚本,那就更好了,但它还不支持。