gpt4 book ai didi

javascript - 控制 javascript 模块初始化(dropzone)

转载 作者:行者123 更新时间:2023-12-02 15:22:58 24 4
gpt4 key购买 nike

我正在尝试手动实例化拖放区。为此,我需要首先设置:

Dropzone.autoDiscover = false;

问题是我不知道在哪里做。要么我做得太早,Dropzone 尚未定义,要么我做得太晚,Dropzone 已经附加到所有 dropzone 元素。

目前我正在尝试:

<body onload="myOnload()">    
...
<script src="{% static 'bower_components/jquery/dist/jquery.min.js' %}"></script>
<script src="{% static 'bower_components/dropzone/dist/dropzone.js' %}"></script>
...
<script type="text/javascript">
function myOnload() {
Dropzone.autoDiscover = false;
// create here my dropzones programatically
}
</script>
</body>

但这已经太晚了:dropzone 已经加载并初始化了没有 url 的组件(因为我没有使用表单),并且失败了。

如何控制 Dropzone 何时开始初始化组件?

最佳答案

正如我在其他人的问题评论中所解释的那样,我不是页面加载方式的专家,但我将尝试解释该过程,或者至少我认为该过程是如何工作的。

在触发 DOMContentLoaded 事件之前,dropzone 库不会尝试附加到元素,这与 body 标记的 onload 属性相同但不完全是,我不完全确定,但我认为 onload 在触发之前会等待更多的事情。

所以我相信它的发生是首先触发 DOMContentLoaded 并且 Dropzone 自动附加到 .dropzone 元素。稍后,onload 事件被触发,并且您的 myOnload() 函数被调用,但为时已晚,因为 dropzone 已经附加了。

要解决此问题,您必须在库后面包含设置 Dropzone.autoDiscover = false 的脚本,但不换行。

<script src="{% static 'bower_components/jquery/dist/jquery.min.js' %}"></script>
<script src="{% static 'bower_components/dropzone/dist/dropzone.js' %}"></script>

<script type="text/javascript">
Dropzone.autoDiscover = false;
function myOnload() {
// create here my dropzones programatically
}
</script>

关于javascript - 控制 javascript 模块初始化(dropzone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33893889/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com