window.onload是否保证将定义jQuery?

时间:2016-08-19 01:08:07

标签: jquery node.js onload ejs

我有以下设置:

header.ejs

<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Bootstrap 101 Template</title>
        <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <body>

page.ejs

<%- include ../partials/header -%>

<!-- some HTML code -->

<script>
// error: $ is not defined
$(function () { });

window.onload = function () {
    // $ is defined
}
</script>

<%- include ../partials/footer -%>

footer.ejs

        <script src="/jquery/jquery.min.js"></script>
        <script src="/bootstrap/js/bootstrap.min.js"></script>
    </body>
</html>

目前,内联JS代码仅在我使用window.onload时才有效。没有它,我的控制台中会出现错误消息$ is not defined。我知道代码必须放在footer.ejs中的jquery脚本标记之后才能生效。

我的问题是使用window.onload,如我的示例所示,保证jQuery将在其回调中定义?当undefined被解雇时,jQuery是否可能window.onload

1 个答案:

答案 0 :(得分:-1)

如果您想在执行任何操作之前保证加载jQuery,请将您的JS包装在jQuery的文档就绪方法中:

jQuery(document).ready(function($){
  // Run your jQuery here...
});

只有在浏览器中请求,加载和执行jQuery后,才会调用该块中的任何JS运行。