问题标签 [labjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
662 浏览

javascript - 未定义不是函数:如何让 LABjs 使用 jQuery 脚本

我正在尝试使用 LABjs 改善网页的加载时间。但是,与我在自己的 jQuery 脚本中使用的 jQuery.cookie('mycookie') 相关,我得到了“未定义不是函数”。

我将不胜感激有关如何实施 LABjs 来处理此问题的一些建议,因为我不太了解文档。

这是我到目前为止的代码:

HTML

我的 HTML 页面的页脚中有 jQuery 和 LAB.min.js

LAB.min.js 文件

在这里,我按顺序加载我的脚本。rating.js 依赖于 jquery-cookie.js,所以我首先包含了一个 wait() 以确保首先加载 jquery-cookie.js。

评分.js

rating.js 是包含在 jQuery(document).ready 函数中的一段长代码。

我在 rating.js 中收到与包含 jQuery.cookie('mycookie') 的代码行相关的错误。它说“未捕获的类型错误:未定义不是函数”

据我了解,当我尝试将 jQuery.cookie() 传递给 .wait() 时,尚未定义它。什么是让它工作的最佳方法,请记住,我想将 rating.js 保存在一个单独的 js 文件中,因为它包含大量代码,并且是许多类似的 js 文件之一,当我用 LABjs 加载它们。

非常感谢!

凯蒂

0 投票
1 回答
49 浏览

javascript - LabJS 和 document.body.appendChild

我正在使用 LabJS,并且在我的一个 js 文件中有一个 document.body.appendChild()。它似乎工作正常,但我想知道它是否会遇到与 document.write 相同的潜在异步问题,或者它的行为是否不同。

0 投票
0 回答
309 浏览

javascript - LABjs加载错误

我使用labJS编写了一个加载几乎所有JS的页面

如果我使用 Usbwebserver 在本地浏览它,一切正常,但是当我将它加载到网络服务器上时,它就不起作用了。调试控制台告诉我“ReferenceError:$LAB 未定义”,随后对 JS 函数的所有调用都失败了。我想知道第二个脚本是否在labJS完全加载之前执行,但我不明白为什么以及如何解决它......

0 投票
1 回答
161 浏览

javascript - 如何将脚本文件推送到 LABjs 加载队列中?

我目前正在使用 LABjs 来推迟脚本的加载,并且在子页面中,我正在像这样将内联脚本推入队列。

然后在我的主要里面$LAB我做

我的内联脚本已经到了我想把它放在一个外部 JS 文件中的地步。如何保持相同类型的加载但作为脚本文件不内联?

0 投票
1 回答
224 浏览

javascript - SPDY CDN + Async Script-loading backend

Would async script loaders like LABjs or $script.js prove beneficial, neutral, or negative if already using a CDN supporting SPDY?

  1. I'm going to use a full-site CDN with SPDY, for example Cloudflare
  2. I've read Script-injected "async scripts" considered harmful but thanks to jQuery dependencies I need to control execution order.
  3. I want to keep dependencies as unbundled as possible

i.e. I've got a series of JS scripts where <script src= would work fine and <script async src= would not. I don't want sync because it would be blocking. And defer is too flaky to consider.

Given the above, I would use a script loader without second thought if it weren't for the uncertainty of SPDY. I probably just need to know whether the approach used by these scripts still gets the same SPDY benefits (pipelining, compression, etc) as "regular" approaches?

Another way of framing the question is: what would be the impact of switching from synchronous script loading with SPDY CDN to using async script loaders with SPDY CDN?

0 投票
1 回答
231 浏览

jquery - 在母版页中使用 Lab.js 异步加载 jQuery,然后在子文件中使用 jQuery 代码

我使用 LAB.js 在 asp.net 母版页中异步加载 JQuery。问题是我使用

以及几乎所有子页面中的其他 JQuery 相关代码,这会导致脚本错误:($ 未定义),因为 JQuery 正在母版页中异步加载。

如何推迟解析子页面中的 jQuery 代码,直到在母版页中完成 jQuery 的异步加载?

问题是从主页面异步加载 JQuery 并在子页面中使用一些 JQuery 代码。怎么可能呢?

0 投票
1 回答
678 浏览

javascript - jQuery UI API 无法使用 LABjs 正确加载

我最近改用LABjs在 SharePoint Webparts (2010) 中加载脚本。这样做的主要原因是为了避免在同一页面中添加多个 Webpart 时多次将相同的库(如jquery和)加载到页面中。jquery.ui这样,它们中的每一个都可以单独指定其依赖项,而无需监管哪些其他 Webpart 已经或可能被添加。

这两个LABjs文件和另一个包含脚本链的文件都是通过<script>Webpart 标记底部的标签加载的。

10 次中有 9 次,Javascript 执行没有任何问题。不过,每隔一段时间,就会抛出一个异常,说明TypeError: $(...).button is not a function.

即使页面上只有一个 Webpart 并且似乎独立于浏览器,也会发生这种情况(在 FireFox 38、Chrome 43 和 IE 11/IE 8 中强制按页面测试)。

链看起来像这样(为清楚起见进行了编辑):

这是调试器输出的内容(为清楚起见也进行了编辑):

此错误几乎总是伴随着jquery.ui库的较长加载时间。

然而,与此同时,从调试器的输出中可以清楚地看出它在.button()调用之前已经完成了执行。

我已经为此奋斗了一段时间,对于问题可能是什么以及如何解决它的任何帮助/见解将不胜感激。我一直在爬取LABjs文档以寻找关于我可能做错了什么的线索,但似乎没有任何东西出现在我身上。


注意:标题中确实存在对的<script>引用jquery,但是无法删除此引用(我无权访问母版页)并且我已经尝试jquery从链中删除,但无济于事。


编辑:有人提出问题可能是由于 SharePoint 服务器位于负载平衡器后面,这可能是jquery.ui库加载时间异常长的原因。虽然这是一种可能性,但我不明白这会如何或为什么会影响LABjs加载/执行功能。

---

更新

经过一番挖掘,我发现,出于某种我仍然不知道的原因,该jquery.ui库绑定到jquery而不是$我的代码所期望的那样。为了尝试解决这个问题,我在 core.js 中创建了一个core.$用 实例化的变量,jQuery.noConflict()用 包裹我的 DOM 相关代码

并将.script(".../js/core.js")调用移到链的末尾(以确保所有插件都正确回滚。)

虽然这并没有解决问题,但发生率已经下降到大约 50 分之一。

0 投票
0 回答
57 浏览

javascript - 使用 LABjs 返回值

所以我有这个函数,我想在使用 $LABjs 动态加载脚本后运行,但 LABjs 不支持返回值,它需要返回自身才能链加载更多脚本并等待......足够公平。但是那我如何获得我的函数的返回值呢?

这返回未定义,因为测试函数立即返回集线器变量。有没有办法强制 LABjs 等待,这样我才能得到我的价值?

建议:

  1. 确实应该有一个强制同步加载的开关,就像 jQuery 允许使用 AJAX 一样。或者 $LABjs 可以返回从它的脚本/等待返回的值的数组。
  2. 返回一个承诺,这样我就可以等待我的变量填充预期值。
0 投票
1 回答
1000 浏览

javascript - 如何结合MVC捆绑和JS文件的异步加载

我有一个 MVC 页面,其中包含许多 JavaScript 依赖项,我们称它们为depend-A 和depend-B,其中depend-B 依赖于depend-A。这些都包含在页面上包含的 MVC 中的不同包中。在通过 Google 的 pagespeed 工具运行它后,它建议我们应该异步包含 JS 以防止渲染阻塞。

由于依赖关系,它们需要按特定顺序加载,因此我研究了利用 LABJS 以正确的顺序异步加载它们,以防止渲染阻塞。

这可以通过包含捆绑包的 URL 来实现,但我无法在开发时在本地拥有 JS 文件的调试版本。

任何人都可以提出解决这个问题的方法,以便我们可以异步加载 JS 文件,但为了在本地维护调试版本?

这是我目前正在使用的。

上面代码的页面源码如下。

0 投票
1 回答
86 浏览

javascript - LABjs:如何将脚本附加到正文标记的末尾

我使用 queueScript 来附加脚本。但是它们被附加在<head>标签中。我想将它们附加在正文标签的末尾。我该怎么做?