推迟执行widget js直到页面完全加载

时间:2015-10-31 22:38:26

标签: javascript jquery django django-widget

我有一个带有一些自定义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尚未加载,并且脚本加载顺序不受我控制。

2 个答案:

答案 0 :(得分:3)

您应该使用addEventListener

,而不是设置window.onload
window.addEventListener("load", customJsStart);

(如果您需要支持IE< 9,则需要一些后备代码 - 请参阅上面的MDN链接。)

如果你能告诉Django在defer类中传递的脚本中添加Media属性,那就更好了。但是它还不支持。

答案 1 :(得分:0)

没有比纯Javascript更好的了!或者你可以像这样使用JQuery:

$(function(){
   cusomJsStart();
});

但是使用这种方法,由于加载了JQuery源文件,页面会更重。

或者您可以将cusomJsStart()放在HTML文件的末尾,但它根本不干净! 你做了正确的选择。