在你问之前,是的,我多次使用Browserify,但由于某些原因,这次它将无法正常工作。
问题:
当我加载网站时,bundle.js只会执行一次,然后在其余时间被忽略。 - 要求不是问题,因为我试图在Console.log中有些需要代码,但是之后,用户完成的任何事情都不会被执行。
正如你在我的代码中看到的那样,我正在尝试执行registerHref()onLlick我的按钮,当我不使用bundle.js时它会工作,但是一旦我用我的包执行此操作,它就像被完全忽略了。我会收到一个错误,上面写着:Uncaught ReferenceError: registerHref is not defined at HTMLButtonElement.onclick
- 但是当我尝试在window.onload上调试window.log函数时 - 它可以正常工作。
我的HTML:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="bundle.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div class="header" style="border-style: solid; text-align: center;">
<button id="register" onclick="registerHref()">Register</button>
</div>
</body>
</html>
我的Javascript:
function registerHref() {
window.location.href = "./register.html"
}
我做了什么:
browserify main.js > bundle.js
&lt; - 通常正常答案 0 :(得分:0)
问题是代码编译完成后,函数不会附加到window
对象,而是在不同的范围内执行。
这里基本上有两个选项:
registerHref
函数附加到窗口对象(不推荐):
function registerHref() {
window.location.href = "./register.html"
}
window.registerHref = registerHref;
&#13;
onclick
属性(推荐):
function registerHref() {
window.location.href = "./register.html"
}
document.getElementById('register').addEventListener('click', registerHref);
&#13;