Javascript 如果事件写在HTML文件中,如何从网页包包调用事件?
如果事件写在HTML文件中,如何从网页包包调用事件 HTML布局的一部分:Javascript 如果事件写在HTML文件中,如何从网页包包调用事件?,javascript,webpack,ecmascript-6,es6-modules,Javascript,Webpack,Ecmascript 6,Es6 Modules,如果事件写在HTML文件中,如何从网页包包调用事件 HTML布局的一部分: <button class="l-dropbtn" onclick="openDropDown()"> <i class="fas fa-bars"></i> </button> import * as frame from "./common/frame.js"; export function openDropDown() { document.getEl
<button class="l-dropbtn" onclick="openDropDown()">
<i class="fas fa-bars"></i>
</button>
import * as frame from "./common/frame.js";
export function openDropDown() {
document.getElementsByClassName("l-dropdown")[0].classList.toggle("is-
hidden");
}
window.onclick = function(event) {
const dropdown = document.getElementsByClassName("l-dropdown")[0];
const trgt = event.target;
if (!dropdown.matches(".is-hidden") && !(trgt.matches('.l-dropbtn') || trgt.matches('.fas')))
dropdown.classList.add("is-hidden");
}
frame.js:
<button class="l-dropbtn" onclick="openDropDown()">
<i class="fas fa-bars"></i>
</button>
import * as frame from "./common/frame.js";
export function openDropDown() {
document.getElementsByClassName("l-dropdown")[0].classList.toggle("is-
hidden");
}
window.onclick = function(event) {
const dropdown = document.getElementsByClassName("l-dropdown")[0];
const trgt = event.target;
if (!dropdown.matches(".is-hidden") && !(trgt.matches('.l-dropbtn') || trgt.matches('.fas')))
dropdown.classList.add("is-hidden");
}
创建捆绑包时,HTML文件看不到
openDropDown()
!我如何解决这个问题,不在版面中单击deleteonclick
(首选),或者在更相关的情况下单击delete 导出Web包中的函数不会使其成为全局函数。您可以尝试将函数直接附加到frame.js
中的窗口对象:
window.openDropDown = openDropDown;
这有点违背了webpack的主要用途,即代码的模块化绑定。试试frame。openDropDown怎么样?不要看frame,我正在尝试!在这种情况下如何添加窗口事件?当前您的
window.onclick=fun…
代码是在frame.js
中导入模块的副作用。更好的方法是将副作用封装在一个函数中,您将在适当的时候导入并调用该函数,例如在页面加载之后。