我有一个带有一些自定义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
尚未加载,并且脚本加载顺序不受我控制。
答案 0 :(得分:3)
您应该使用addEventListener
:
window.onload
window.addEventListener("load", customJsStart);
(如果您需要支持IE< 9,则需要一些后备代码 - 请参阅上面的MDN链接。)
如果你能告诉Django在defer
类中传递的脚本中添加Media
属性,那就更好了。但是它还不支持。
答案 1 :(得分:0)
没有比纯Javascript更好的了!或者你可以像这样使用JQuery:
$(function(){
cusomJsStart();
});
但是使用这种方法,由于加载了JQuery源文件,页面会更重。
或者您可以将cusomJsStart()
放在HTML文件的末尾,但它根本不干净!
你做了正确的选择。