基本webpack不适用于按钮单击功能 - 未捕获参考错误:未定义

mck*_*imo 30 javascript webpack

我有一个带按钮的基本HTML页面:

<!DOCTYPE html>
<html lang="en">
<head>
  ...
</head>
<body>
    <button id="button" onclick="uclicked()">Click me</button>
    <script src="./bundle.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

app.js:

//(function(){
    console.log('started up')
    function uclicked(){
        console.log('You clicked');
    }
//})();
Run Code Online (Sandbox Code Playgroud)

webpack已安装并webpack --watch成功.webpack.config.js是:

module.exports={
    entry: './app.js',
    output: {
        path: __dirname,
        filename: 'bundle.js'
    }
}
Run Code Online (Sandbox Code Playgroud)

当我加载页面console.log工作但是当我按下按钮时我得到了Uncaught ReferenceError: uclicked is not defined.

如果我更换<script src="./bundle.js"></script><script src="./app.js"></script>和旁路的WebPack按钮点击罚款.为什么这个基本的webpack设置不起作用?

Shi*_*dan 79

当您通过webpack运行该文件时,webpack将尽量不要乱丢全局范围,因此默认情况下该功能不会全局可用.

如果您希望在JS文件范围之外访问该函数,则应将其置于全局范围内.

function uclicked() {
  // do something
}
window.uclicked = uclicked;
Run Code Online (Sandbox Code Playgroud)

要不就:

window.uclicked = function() {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

  • @vidstige然后你必须在按钮上手动设置事件处理程序,如下所示:document.getElementByID('buttonID').onClick = function(){/*do somethiing*/}你需要确保调用这个脚本****之后加载了html(您可以通过在<body>末尾调用脚本标记来实现). (5认同)
  • 如何在不全局的情况下访问该函数? (2认同)