我正在尝试手动实例化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何时开始初始化组件?
答案 0 :(得分:1)
尝试在外面书写,然后手动添加您需要的内容
<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>
答案 1 :(得分:1)
正如我在其他问题评论中所解释的那样,我不是关于如何加载页面的专家,但我将尝试解释该过程,或者至少我认为该过程是如何工作的。
在触发DOMContentLoaded
事件之前,dropzone库不会尝试附加到元素,这与身体标记的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>