我正在为head.js(http://headjs.com)构建一个函数,该函数将以与jQuewy(http://jquewy.com)库相同的方式将脚本加载到其中。但是,我在使用不同的浏览器时遇到了一些非常疯狂的错误。期望的结果是获得有关加载的jQuery版本的警报:

 (function() {
  head.js(
   jquewy_get("","jquery","ui")
  );

  head.ready(function(){
   alert($.fn.jquery);
  });

  //Takes arguments and sets them so that it
  //loads the urls in headjs
  function jquewy_get(){
   var ret = new Array();
   var arg = arguments[0];

   var rand = Math.floor(Math.random()*999*999);
   for (var i = 1; i < arguments.length; i++){
    var arg = arguments[i];
    ret[i] = 'hxxp://jquewy.com/dev/headjs/?name='+arg+'&rand='+rand;
   }
   return ret;
  }

 })();


在Firefox中,我得到:


  $在第39行未定义


但是,即使很奇怪,脚本标签也会被加载(<script type="text/javascript" src="http://jquewy.com/dev/headjs/?name=ui&rand=717786"></script>),但是Firebug说它具有:


  无法加载以下源代码:hxxp://jquewy.com/dev/headjs/?name = ui&rand = 717786


这显然可以解决。在Chromium中,它甚至不会加载脚本标签,而且我也没有费心去查看其他任何浏览器,因为如果在这两个浏览器中均不起作用,那么它在其他任何地方都将无法工作。

您可以在此处查看源代码:http://jquewy.com/dev/static/headjs/test/

编辑:对于那些想知道这一点的人来说,重点是让您不需要记住url-我正在移植我构建的另一个服务jQuewy,该服务可通过基于它们加载库来进行快速原型制作。名称。我的服务将自动获取最新资源并将其自动嵌入页面中。 head.js是另一个执行类似操作的脚本(但更受欢迎),因此我想使其服务与之兼容,以便最终用户可以选择加载脚本的方式。

编辑#2:在我的链接中进行硬编码似乎会产生相同的错误。我的服务器使用重定向来指向正确的脚本。此行为是否正常,是否有与浏览器无关的解决方法?

最佳答案

由于未设置jQuery的$别名而发生错误。
脚本正常加载。您可以通过致电进行检查

alert(jQuery('#nav').html());


例如。有用。
因此,您需要自己设置别名。例如:

window.$ = jQuery;
alert($('#nav').html());


如您所见,没有错误。

顺便说一句,由于$ alias可以在任何库中设置,因此必须提供一种解决冲突的机制。就像在jQuery.noConflict()中一样。

09-25 17:54