在使用引导模式时,我遇到了这个错误(TypeError无法读取未定义的属性(阅读“backdrop”)),这个错误由我们的错误跟踪器跟踪,但我无法重现这个错误。我尝试在各种浏览器、浏览器版本和操作系统上重现这个错误。
使用的引导版本- v5.2.1
我使用JavaScript初始化了模态
if (bootstrap == undefined) {
document.getElementById("browser-not-supported-container").classList.remove("d-none");
} else {
modal1 = new bootstrap.Modal(document.getElementById('modal1'));
modal2 = new bootstrap.Modal(document.getElementById('modal2'));
modal3 = new bootstrap.Modal(document.getElementById('modal3'));
}
这些模态的Html代码
<!-- Modal 1-->
<div class="modal fade text-start" data-bs-backdrop="static" data-bs-keyboard="false" id="modal1" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<!-- Header -->
</div>
<div class="modal-body">
<!-- Body -->
</div>
</div>
</div>
</div>
<!-- Modal 2-->
<div class="modal fade text-start" id="modal2" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body text-center">
<!-- Body -->
</div>
</div>
</div>
</div>
<!-- Modal 3-->
<div class="modal fade text-start" id="modal3" tabindex="-1" role="dialog">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body text-center">
<!-- Body -->
</div>
</div>
</div>
</div>
确切的误差为:
TypeError Cannot read properties of undefined (reading 'backdrop')
https://example.com/:lineNo3:colNo3 Ni._initializeBackDrop
https://example.com/:lineNo2:colNo2 new Ni
https://example.com/:lineNo1:colNo1 HTMLDocument.<anonymous>
注意:lineNo 1是modal 2初始化的位置
我还尝试了模态选项,但错误仍然存在
modal1 = new bootstrap.Modal(document.getElementById('modal1'), { backdrop: "static", keyboard: false });
modal2 = new bootstrap.Modal(document.getElementById('modal2'), { backdrop: "static", keyboard: false });
modal3 = new bootstrap.Modal(document.getElementById('modal3'), { backdrop: "static", keyboard: false });
1条答案
按热度按时间2hh7jdfx1#
我使用的是Vue3和Bootstrap 5.2.3。我试图显示我创建的一个Modal,但收到了与您完全相同的错误。以下是问题所在。
Vue有各种各样的生命周期事件可以插入来执行动作,最初我是在设置阶段做这项工作的:
问题是Modal在这个阶段还没有加载到DOM中,因此在执行getElementById操作时是未定义的。解决方案是等待,直到DOM通过使用挂载阶段加载,如下所示:
如果您没有使用Vue,答案应该是类似的。在事件回调函数中执行getElementById操作,该函数仅在加载DOM之后才触发,例如DOMContentLoaded