我正在使用模块导入功能在ES6中编写我的Javascript文件。现在,大多数现代浏览器都支持使用type ='module'来正确解析导入语句。 脚本类型=“模块 https://caniuse.com/#feat=es6-module
我构建了一个HTML select元素,然后使用其中的一个模块文件中的onchange()调用函数 选择onchange =“ someFunction()” 但是总是会发生错误,说在发生on change事件时未定义函数。 我内联测试了相同的功能,也没有使用type =“ module”,没有出现预期的问题。
这是一个错误吗?它与默认情况下推迟的模块脚本有关吗?我想念一些简单的东西吗?
我知道我可以通过使用Webpack或框架来避免此问题,但我真的很想尝试并仅使用原始的javascript脚本而没有任何其他功能。我相信也在js中创建此select元素然后附加到dom也会解决此问题。
答案 0 :(得分:1)
模块不会创建全局变量。一切都在模块内。
如果要绑定事件处理程序,请使用addEventListener
而不是使用onXxxxx
属性从模块内部完成。
答案 1 :(得分:1)
在类型模块中使用脚本时可以使用此功能
<button onclick="import('/modules/script.js').then(o=> o.showdialog())">
并在script.js中使用导出
export function showdialog() {}