- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最初,我把所有的 javascript 都放在了 head 中,但后来我注意到页面加载时间非常慢 - 这并不奇怪。因此,我将所有脚本移至底部以消除 DOM 渲染阻塞效应。
在 Google 的 PageInsights 页面上,他们表示这不再是最佳实践,他们建议将脚本放在头部并添加异步加载
https://developers.google.com/speed/docs/insights/BlockingJS
我遇到的问题是,根据我的理解,如果您使用异步,那么脚本将在完成加载后立即执行,因此您可能会遇到依赖性问题 - 这正是 jQuery 和脚本所发生的情况就靠它了。
https://calendar.perfplanet.com/2016/prefer-defer-over-async/
我发现有一个 defer 属性,它类似于 async,但它会推迟执行直到加载。如果是这样,为什么我仍然遇到这些依赖错误?
并不是每次都会发生。碰巧有时依赖 jQuery 的脚本加载速度比 jQuery 本身更快,如下所示。
我的问题是,我应该怎么做才能确保所有内容都异步加载但在加载完成之前才执行?
希望这是一个简单的修复,不需要大量花哨的 JavaScript。
最佳答案
Note that asynchronous scripts are not guaranteed to execute in specified order and should not use document.write. Scripts that depend on execution order or need to access or modify the DOM or CSSOM of the page may need to be rewritten to account for these constraints.
简单的建议:只需将脚本放在底部,或者仅使用异步标记,除非它们没有任何依赖项。
任何依赖于 Jquery 的东西都依赖于首先执行(加载)的 Jquery。
此外,最佳实践可能是对捆绑文件进行分块、微观组织加载顺序,并根据需要使用带有缓存破坏程序的 CDN(如果您不使用版本控制),但这听起来像是过度优化。
或者,如果我没看错您的代码,您需要延迟 ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js
脚本线。
关于javascript - DEFER 实际上并未推迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49615384/
我想以与 Angular 的 defer.resolve 和 Javascript Promise 对象相同的方式解析一个 Promise 对象。换句话说:我想创建一个要返回的虚拟 promise 对
我有两个实时制作和更新的图,如下所示: 我使用标准函数 plot() 和 lines() 生成了这些图。由于我实时生成和重新生成这些图,因此需要进行大量重绘和闪烁操作。 是否可以在两个图都完成之前推迟
我的一个页面上有一些 js 代码,它使用 ajax 加载一些页面元素。这些发生在页面的最顶部,不幸的是减慢了页面其余部分的加载速度。我想知道是否有办法推迟此操作,以便它在页面加载后加载。 这是我正在使
我有以下场景。 CompletableFuture result = CompletableFuture.supplyAsync(task, executor); result.thenRun(()
我经常更新用户表,它只是设置用户的最后一次上线时间,我想知道是否有一种简单的方法可以延迟它们并将它们在短超时(5 分钟或所以)。这将大大减少对我的用户数据库的查询。 最佳答案 如果您执行UPDATE
Gtmetrix 说有一些来自 youtube 的 JS 文件需要推迟。我删除了 iframe 并使用 jQuery 和经典的 Javascript 代码推迟了它,但这两种方法都不起作用。 Gtmet
我正在寻找阻止切换 RadioButton 的可能性,但仍然捕获 Click 事件。不幸的是,使用 Enabled=false 或 IsHitTestVisible=false 属性会阻止 Click
在我的小应用程序中,我从系统(不受我控制)收到一系列排队的 onEventXXX()。 不能保证那些 onEventXXX() 的时间。唯一可以保证的是,它们会按照放入队列的顺序接收。 在 onEve
我有一个在多个 View Controller 中使用 UIWebViews 的应用程序。 UIWebViews 用于渲染本地生成的 html,无需缓慢的网络访问。 为了节省内存,我仅根据 viewc
有时我想推迟 Promise 构造函数的执行,但仍然能够定义 Promise 链。我发现并稍微调整了以下方法,但由于我对 promise 的经验很少,所以我想知道 是否有更简洁的方法来做到这一点? 这
我刚刚遇到了使用 jQuery 的 .delay() 方法(v 1.4.2)尝试延迟以下 .load() 方法的问题。 像这样: $('myElement').delay(500).load('myP
我定义了一个成员变量如下。由于变量不会传递,所以我决定在这里使用 scoped_ptr 而不是 shared_ptr。 class ClassName { public: ClassName(
在开发我的作品集时,我意识到页面加载需要很长时间,因为必须加载所有图像才能完成页面加载。 所以,我想知道是否有办法阻止或停止加载,然后再允许加载。 意思是,立即阻止加载,然后单击已加载的另一个元素,比
这个问题已经有答案了: Defer loading and parsing of PrimeFaces JavaScript files (2 个回答) 已关闭 8 年前。 Google pagesp
我正在尝试推迟或异步加载 Trip Advisor 小部件,但由于某种原因它不起作用。 我认为异步或延迟可能不起作用,因为 Trip Advisor 脚本随后执行 document.write 命令。
我正在尝试使用 Ajax 将一些内容加载到页面中。加载的 html 包含一些 JavaScript 代码。即使代码包装在 $(document).ready 中,它也会在内容插入文档之前执行,因为在加
我正在使用模板字符串来生成一些文件,我喜欢新的 f 字符串的简洁性,用于减少我以前的模板代码,如下所示: template_a = "The current name is {name}" names
我有一个处理多个客户端连接的 Android 绑定(bind)服务。如果我理解正确的话,如果没有客户端连接,Android 将终止该服务。 但是,此时,在客户端断开连接后 1 分钟内,我的服务可能仍有
我的以下目标是: 获取决议列表 (按顺序)扫描每个内容,找到第一个导致成功直播的内容 为了测试这一点,我有 testVideoPresence: var testCounter = 0; functi
现在,我让用户在注册页面上输入数据,其中包括让用户输入他们的“计划类型”。我将此用户数据存储在 Firebase 上。 在用户提交上一个输入页面后的下一页上,我将用户带到一个输出页面,该页面使用 An
我是一名优秀的程序员,十分优秀!