首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LABjs bug :脚本总是使用.script()执行加载的序列

LABjs bug :脚本总是使用.script()执行加载的序列
EN

Stack Overflow用户
提问于 2012-08-26 09:53:12
回答 1查看 436关注 0票数 0

当我用LABjs做一些测试用例时,我遇到了一些问题,下面是代码:

代码语言:javascript
复制
$LAB.script('http://code.jquery.com/jquery-1.8.0.min.js')
    .script('http://id.qq.com/js/10001/simple.js');

根据API描述,jquery-1.8.0.min.js和simple.js的执行顺序没有保证。我用fiddler阻止了jquery-1.8.0.min.js,我的做法是:

  1. 它在IE8中运行得很好,当simple.js完成下载时,它马上就会执行。
  2. 在chrome 20中,simple.js在jquery-1.8.0.min.js完成下载和执行之前从未执行。

是虫子吗?

然后我在chrome 20中做了另一个测试,下面是代码:

代码语言:javascript
复制
var script = document.createElement('script');
script.type = 'text/cache';
script.src = 'http://code.jquery.com/jquery-1.8.0.min.js';
document.head.appendChild(script);

当我运行这段代码时,jQuery1.8.0.min.js没有开始下载,是问题所在吗?

下面是api描述:http://labjs.com/documentation.php#script

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-28 17:52:46

你有两个问题,让我单独回答:

  1. 如果"simple.js“在Chrome 20中被阻塞,但在IE8中却能正常工作,为什么"jquery.js”不能运行? 嗯,我不完全知道为什么会这样。这可能不是LABjs中的一个bug,但它可能是Chrome的一个怪癖。根据规范,它应该以最快的顺序运行,这意味着"simple.js“不应该等待"jquery.js”。除了浏览器有怪癖/错误之外,唯一的其他解释是在代码中的某个地方设置了$LAB.setGlobalDefaults({AlwaysPreserveOrder:true}),因为这将导致阻塞行为,就像两者之间存在一个wait()一样。 为了排除这种可能性,您是否可以将代码片段更改为$LAB.setOptions({AlwaysPreserveOrder:false}).script(...)...,以显式禁用自动wait()行为,以防万一?
  2. Webkit (粗略地说,Chrome11‘ish)如果脚本元素的type属性不是可识别的有效类型,就停止获取它们。因此,"text/cache“应该被忽略,不能在Chrome 20 (以及所有其他浏览器,除了IE <= 9)中下载,因为这是规范所要求的。当您在LABjs的源代码中看到这种技术时,它实际上被用作最后一种回退,它只适用于那些非常老的/遗留的webkit浏览器,因为它在那时确实起作用了。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12129163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档