Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有jQuery的Javascript加载程序;“未定义”;_Javascript_Jquery_Undefined_Requirejs_Labjs - Fatal编程技术网

使用带有jQuery的Javascript加载程序;“未定义”;

使用带有jQuery的Javascript加载程序;“未定义”;,javascript,jquery,undefined,requirejs,labjs,Javascript,Jquery,Undefined,Requirejs,Labjs,我正在使用一个Javascript加载程序[requireJS],它将脚本与内容并行加载-但是,我有一个问题。i、 e require('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'); 通常-作为“备份”-我使用 <script type="text/javascript"> if (typeof jQuery == 'undefined') { document.write(unes

我正在使用一个Javascript加载程序[requireJS],它将脚本与内容并行加载-但是,我有一个问题。i、 e

require('http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js');
通常-作为“备份”-我使用

<script type="text/javascript">
  if (typeof jQuery == 'undefined') {
    document.write(unescape("%3Cscript src='/scripts/jquery-1.4.4.min.js' type='text/javascript'%3E%3C/script%3E"));
  }
</script>

if(typeof jQuery==“未定义”){
write(unescape(“%3Cscript src=”/scripts/jquery-1.4.4.min.js'type='text/javascript'%3E%3C/script%3E”);
}
然而,当使用java脚本加载器时——这将始终呈现jQuery“未定义”——因为JS和内容是并行加载的

其效果基本上是通过javascript加载程序加载jQuery 2x,即1x,1通过“jQuery==undefined”


如何使“备份”与javascript加载程序一起工作?

据我所知,
requirejs
通常是这样使用的:

require(['http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'],
    function() {
        // Code that depends on jQuery here.
    }
);
依赖于jQuery的函数将仅在加载jQuery时调用。但如果jQuery加载失败,依赖它的代码将永远不会执行

由于您希望在这种情况下尝试使用本地jQuery,因此可能应该捕获脚本加载超时错误,并尝试从其他源加载jQuery。(但请注意,超时错误很慢。)

关于以下方面的错误处理信息很少:

要检测错误,可以覆盖
require.onError()
以获取错误。如果是超时问题,则传递给onerror函数的错误对象将包含两个属性:

  • requireType:值将为“超时”
  • requireModules:超时的模块名称/URL数组
我认为,代码可能如下所示(未经测试):


据我所知,
requirejs
通常是这样使用的:

require(['http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js'],
    function() {
        // Code that depends on jQuery here.
    }
);
依赖于jQuery的函数将仅在加载jQuery时调用。但如果jQuery加载失败,依赖它的代码将永远不会执行

由于您希望在这种情况下尝试使用本地jQuery,因此可能应该捕获脚本加载超时错误,并尝试从其他源加载jQuery。(但请注意,超时错误很慢。)

关于以下方面的错误处理信息很少:

要检测错误,可以覆盖
require.onError()
以获取错误。如果是超时问题,则传递给onerror函数的错误对象将包含两个属性:

  • requireType:值将为“超时”
  • requireModules:超时的模块名称/URL数组
我认为,代码可能如下所示(未经测试):


好啊解决方法:P-基本上你只需在相同的标记中插入一个本地副本,而不使用“document.write”,因为它在requireJS中是不允许的,比如
if(typeof jQuery==“undefined”){require('/scripts/jQuery.js');}
那么你是从谷歌并行加载内容的吗?但是,如果Jquery尚未加载,内容中的javascript将如何解析?需求中的那个总是“迟到”,所以你总是需要备份?您可以并行执行相同的备份(因此:检查您的备份是否已全部就绪加载:如果已加载,请不要再次加载),但坦率地说,我看不出“并行”加载jquery如何工作。可能重复@mplungjan-不是重复-完全不同的问题。我在问库是否根本无法加载-如何“确保”它加载。这个问题不是问这个@纳恩-是的,我设法弄明白了:)好吧。。。。解决方法:P-基本上你只需在相同的标记中插入一个本地副本,而不使用“document.write”,因为它在requireJS中是不允许的,比如
if(typeof jQuery==“undefined”){require('/scripts/jQuery.js');}
那么你是从谷歌并行加载内容的吗?但是,如果Jquery尚未加载,内容中的javascript将如何解析?需求中的那个总是“迟到”,所以你总是需要备份?您可以并行执行相同的备份(因此:检查您的备份是否已全部就绪加载:如果已加载,请不要再次加载),但坦率地说,我看不出“并行”加载jquery如何工作。可能重复@mplungjan-不是重复-完全不同的问题。我在问库是否根本无法加载-如何“确保”它加载。这个问题不是问这个@纳恩-是的,我设法弄明白了:)