Browserify - 捆绑加载,但之后不起作用

时间:2018-06-16 20:29:56

标签: javascript node.js browserify

在你问之前,是的,我多次使用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; - 通常正常

1 个答案:

答案 0 :(得分:0)

问题是代码编译完成后,函数不会附加到window对象,而是在不同的范围内执行。

这里基本上有两个选项:

  1. registerHref函数附加到窗口对象(不推荐):
  2. &#13;
    &#13;
    function registerHref() {
      window.location.href = "./register.html"
    }
    
    window.registerHref = registerHref;
    &#13;
    &#13;
    &#13;

    1. 在JS代码中创建一个事件监听器,并从HTML中删除onclick属性(推荐):
    2. &#13;
      &#13;
      function registerHref() {
        window.location.href = "./register.html"
      }
          
      document.getElementById('register').addEventListener('click', registerHref);
      &#13;
      &#13;
      &#13;