由于 Bootstrap-native javascript 不是直接必需的,因为它仅在用户开始与页面交互时才真正需要,我想我可以延迟加载它。(是的,它只有几 KB,但是,如果可能的话,为什么不呢?)
小问题是引导脚本将在 DOMContentLoaded 事件上触发它的初始化函数 initCallback()。我相信这个函数会在 HTML 中查找数据标签并关联适当的事件/触发器。由于它是延迟加载的,因此 DOMContentLoaded 在 bootstrap.js 下载之前触发,因此它缺少此事件并且不会初始化。
我只是 Javascript 的爱好者;而且我似乎无法弄清楚在 fetch() (实际上使用我在网上找到的名为 fetchInject() 的函数)完成脚本下载后如何手动调用此函数。
也许延迟加载引导不是一个好主意;但从长远来看,我想我会弄清楚的;如果我至少让这个工作。
/* Native Javascript for Bootstrap 4 | Initialize Data API
--------------------------------------------------------*/
var initializeDataAPI = function( constructor, collection ){
for (var i=0, l=collection[length]; i<l; i++) {
new constructor(collection[i]);
}
},
initCallback = BSN.initCallback = function(lookUp){
lookUp = lookUp || DOC;
for (var i=0, l=supports[length]; i<l; i++) {
initializeDataAPI( supports[i][1], lookUp[querySelectorAll] (supports[i][2]) );
}
};
// bulk initialize all components
DOC[body] ? initCallback() : on( DOC, 'DOMContentLoaded', function(){ initCallback(); } );
initCallback() 执行,以便引导程序将找到所有 HTML 内联数据挂钩(如下拉菜单和东西)