我有一个带有一些自定义 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
尚未加载,并且脚本加载顺序超出了我的控制范围。
最佳答案
您应该使用 addEventListener
而不是设置 window.onload
:
window.addEventListener("load", customJsStart);
(如果您需要支持 IE<9,则需要一些后备代码 - 请参阅上面的 MDN 链接)。
如果您可以告诉 Django 将 defer
属性添加到您在 Media
类中传递的脚本,那就更好了,但它还不支持这一点。
关于javascript - 推迟小部件 js 的执行,直到页面完全加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457376/