Javascript FF 2.0.x中的Scriptaculous加载参数
大家好, 我正在尝试使用以下代码在页面上显式加载effects.js和builder.js脚本库: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中,我必
<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>
感谢您的输入!我会给这一个镜头,让你知道结果。谢谢你的输入!我会试一试,让你知道结果。