【发布时间】:2017-05-14 16:20:21
【问题描述】:
我有以下html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/blazy/1.8.2/blazy.min.js" defer></script>
<script src="https://code.jquery.com/jquery-2.1.4.min.js" integrity="sha256-8WqyJLuWKRBVhxXIL1jBDD7SDxU936oZkCnxQbWwJVw=" crossorigin="anonymous" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lightbox2/2.9.0/js/lightbox.min.js" defer></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous" defer></script>
<!-- 26 dec flexslider js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/flexslider/2.6.3/jquery.flexslider.min.js" defer></script>
<script defer>
(function($) {
$(document).ready(function() {
//do something with b-lazy plugin, lightbox plugin and then with flexslider
});
})(jQuery);
</script>
</head>
<body>
</body>
</html>
我得到一个错误,说 jQuery 没有定义。现在,即使我从我的内联 JS 代码中删除了 defer,它也会说 jQuery 是未定义的。出于某种原因,我必须将 jQuery 插件放在头脑中并保持我的 JS 代码内联。我的问题是:
为什么当
defer属性存在时内联 Javascript 代码不会被延迟?有没有办法在我的内联 Javascript 代码中模仿延迟行为?如果需要,我可以把它放在正文标签的末尾。
【问题讨论】:
-
将您的内联 javascript 移动到外部文件,然后将其推迟 :)
-
如果您不想使用 html5,也可以通过编程方式内联外部 javascript
-
@mike510a 由于某种原因,我无法将其放入外部文件中。它是由 php 生成的,我不了解 php,所以我无法更改该代码。
-
你不必推迟你的 jQuery 库。它不必在文档的头部——你可以将它移动到正文的末尾——只要它来了在内联脚本之前并且不被延迟它会没事的。
-
那么请找一些了解 php 的人(最好是编写您正在使用的代码的人)。或者只是将
defer放在任何地方。
标签: javascript jquery html deferred-execution