Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果事件写在HTML文件中,如何从网页包包调用事件?_Javascript_Webpack_Ecmascript 6_Es6 Modules - Fatal编程技术网

Javascript 如果事件写在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

如果事件写在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.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()
!我如何解决这个问题,不在版面中单击delete
onclick
(首选),或者在更相关的情况下单击delete

导出Web包中的函数不会使其成为全局函数。您可以尝试将函数直接附加到
frame.js
中的窗口对象:

window.openDropDown = openDropDown;

这有点违背了webpack的主要用途,即代码的模块化绑定。

试试frame。openDropDown怎么样?不要看frame,我正在尝试!在这种情况下如何添加窗口事件?当前您的
window.onclick=fun…
代码是在
frame.js
中导入模块的副作用。更好的方法是将副作用封装在一个函数中,您将在适当的时候导入并调用该函数,例如在页面加载之后。