控制javascript模块初始化(dropzone)
Control javascript module initialization (dropzone)
我正在尝试手动实例化一个放置区。为此,我需要先设置:
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何时开始初始化组件?
尝试在外面写,然后手动添加你需要的
<script type="text/javascript">
Dropzone.autoDiscover = false;
function myOnload() {
// create here my dropzones programatically
}
</script>
这个脚本标签应该写在插件包含之前:
<script type="text/javascript">
Dropzone.autoDiscover = false;
function myOnload() {
// create here my dropzones programatically
}
</script>
<script src="{% static 'bower_components/jquery/dist/jquery.min.js' %}"></script>
<script src="{% static 'bower_components/dropzone/dist/dropzone.js' %}"></script>
正如我在其他人的问题评论中所解释的那样,我不是页面加载方式方面的专家,但我将尝试解释该过程,或者至少我认为该过程是如何工作的。
dropzone 库在触发 DOMContentLoaded
事件之前不会尝试附加到元素,这与 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>
我正在尝试手动实例化一个放置区。为此,我需要先设置:
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何时开始初始化组件?
尝试在外面写,然后手动添加你需要的
<script type="text/javascript">
Dropzone.autoDiscover = false;
function myOnload() {
// create here my dropzones programatically
}
</script>
这个脚本标签应该写在插件包含之前:
<script type="text/javascript">
Dropzone.autoDiscover = false;
function myOnload() {
// create here my dropzones programatically
}
</script>
<script src="{% static 'bower_components/jquery/dist/jquery.min.js' %}"></script>
<script src="{% static 'bower_components/dropzone/dist/dropzone.js' %}"></script>
正如我在其他人的问题评论中所解释的那样,我不是页面加载方式方面的专家,但我将尝试解释该过程,或者至少我认为该过程是如何工作的。
dropzone 库在触发 DOMContentLoaded
事件之前不会尝试附加到元素,这与 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>