我有以下设置:
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
?
答案 0 :(得分:-1)
如果您想在执行任何操作之前保证加载jQuery,请将您的JS包装在jQuery的文档就绪方法中:
jQuery(document).ready(function($){
// Run your jQuery here...
});
只有在浏览器中请求,加载和执行jQuery后,才会调用该块中的任何JS运行。