Javascript FF 2.0.x中的Scriptaculous加载参数

Javascript FF 2.0.x中的Scriptaculous加载参数,javascript,firefox,Javascript,Firefox,大家好, 我正在尝试使用以下代码在页面上显式加载effects.js和builder.js脚本库: <script type="text/javascript" src="/javascripts/scriptaculous.js?load=builder,effects"></script> 这就像FF3.0.x、IE7和Opera 9.6.x中的魅力一样。但是,它在Firefox2.0.x中不起作用。这些库永远不会被加载。为了让它们加载到FF 2.0.x中,我必

大家好,

我正在尝试使用以下代码在页面上显式加载effects.js和builder.js脚本库:

<script type="text/javascript" src="/javascripts/scriptaculous.js?load=builder,effects"></script>

这就像FF3.0.x、IE7和Opera 9.6.x中的魅力一样。但是,它在Firefox2.0.x中不起作用。这些库永远不会被加载。为了让它们加载到FF 2.0.x中,我必须用两个额外的标记显式引用它们,即:

<script type="text/javascript" src="/javascripts/scriptaculous.js?load=builder,effects"></script>
<script type="text/javascript" src="/javascripts/builder.js"></script>
<script type="text/javascript" src="/javascripts/effects.js"></script>

有人知道FF 2.0和3.0之间的差异是什么导致了这种行为吗?有更好的办法解决我的问题吗


谢谢你的帮助

我今天喝了太多咖啡,所以我想我会试试看

一种可能性是scriptaculous.js中的load函数没有正确地进行处理,以包括作为参数传递给它的库(scriptaculous.js?load=builder,effects)

尝试输入警报以查看是否正在输入scriptaculous.js中的加载函数,如果是,则该过程可能不会执行在FF2上应该执行的操作:

load: function() {
    alert('In the load function!');
    ...rest of code here...
如果不是,那么(可能)Firefox2不想执行load

load的最后一部分似乎完成了包含其他LIB的工作:

$A(document.getElementsByTagName("script")).findAll( function(s) {
      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
    }).each( function(s) {
      var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
      var includes = s.src.match(/\?.*load=([a-z,]*)/);
      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
       function(include) { Scriptaculous.require(path+include+'.js') });
    }); 
从上面的代码中,我可以看到includes变量应该解析出库名称,看看是否分配了任何内容,将其替换为如下内容:

var includes = s.src.match(/\?.*load=([a-z,]*)/);
alert(includes[0] + ' ' + includes[1]);
这会让你更好地了解发生了什么。虽然这是一个有趣的小问题,但我绝对赞同您提出的解决方案:

<script type="text/javascript" src="/javascripts/scriptaculous.js"></script>
<script type="text/javascript" src="/javascripts/builder.js"></script>
<script type="text/javascript" src="/javascripts/effects.js"></script>

我今天喝了太多咖啡,所以我想我会试试看

一种可能性是scriptaculous.js中的load函数没有正确地进行处理,以包括作为参数传递给它的库(scriptaculous.js?load=builder,effects)

尝试输入警报以查看是否正在输入scriptaculous.js中的加载函数,如果是,则该过程可能不会执行在FF2上应该执行的操作:

load: function() {
    alert('In the load function!');
    ...rest of code here...
如果不是,那么(可能)Firefox2不想执行load

load的最后一部分似乎完成了包含其他LIB的工作:

$A(document.getElementsByTagName("script")).findAll( function(s) {
      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
    }).each( function(s) {
      var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
      var includes = s.src.match(/\?.*load=([a-z,]*)/);
      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
       function(include) { Scriptaculous.require(path+include+'.js') });
    }); 
从上面的代码中,我可以看到includes变量应该解析出库名称,看看是否分配了任何内容,将其替换为如下内容:

var includes = s.src.match(/\?.*load=([a-z,]*)/);
alert(includes[0] + ' ' + includes[1]);
这会让你更好地了解发生了什么。虽然这是一个有趣的小问题,但我绝对赞同您提出的解决方案:

<script type="text/javascript" src="/javascripts/scriptaculous.js"></script>
<script type="text/javascript" src="/javascripts/builder.js"></script>
<script type="text/javascript" src="/javascripts/effects.js"></script>


感谢您的输入!我会给这一个镜头,让你知道结果。谢谢你的输入!我会试一试,让你知道结果。