我在Webpacker中加载了以下JavaScript:
'use strict';
(function() {
alert("This shows up.");
var someObject = document.querySelectorAll('[data-toggle="thing"]');
})();
我知道该文件已正确加载到Webpacker中并执行,因为我看到了警报This shows up.
。但是,当我进入控制台时,someObject
是一个空数组,尽管页面包含一个具有data-toggle
属性的对象。
我在控制台中看不到任何有助于诊断问题的错误。
我猜这个问题涉及到在加载页面之前执行的脚本?然而,我不确定在使用Rails6和Webpacker时如何补救这种情况。。。
如有任何协助,我们将不胜感激!
您可能需要将代码封装在事件侦听器回调中,该回调将在加载DOM时执行。如果您的脚本标记位于<head>
中,则可能会出现这种情况;它在加载页面的其余部分之前执行。
window.addEventListener('DOMContentLoaded', (_event) => {
let someObject = document.querySelectorAll('[data-toggle="thing"]');
});
您也不一定需要将代码封装在IIFE(即(function() { })()
(中,因为webpack中的每个文件(通常(都被视为具有自己功能范围的模块。