javascript - 推迟小部件 js 的执行,直到页面完全加载

标签 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 尚未加载,并且脚本加载顺序超出了我的控制范围。

最佳答案

您应该使用 addEventListener 而不是设置 window.onload :

window.addEventListener("load", customJsStart);

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

如果您可以告诉 Django 将 defer 属性添加到您在 Media 类中传递的脚本,那就更好了,但它还不支持这一点。

关于javascript - 推迟小部件 js 的执行,直到页面完全加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457376/

相关文章:

python - 编写管理器来过滤查询集结果

python - Apache 与 Django/Matplotlib 应用程序一起挂起

Django Admin 通过 apache 破坏了 CSS 链接,但可以在 runserver 模式下工作

javascript - 显示 xml 数据的链接

jquery - 脚本87 : Invalid argument

javascript - 通过 JavaScript 形式登录 HTTP 客户端到 ElasticSearch (readonlyrest)

jquery - 如何使用 jQuery 远程验证依赖于表单中另一个字段的字段?

javascript - Jquery 客户端验证不起作用

javascript - 在基于 React 的站点中加载页面时启动 Bootstrap 模式。

javascript - 操作方法 : Bootstrap 4 Inline Checkboxes - change to stack on screen size change