2009-03-30 25 views
1

挨拶すべて、Scriptaculousの負荷パラメータ

私は明示的にeffects.jsをロードしようとし、ページ上のScriptaculousのライブラリをbuilder.js、このコードを使用しています:

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

このFF 3.0.x、IE7、Opera 9.6.xの魅力のように機能します。しかし、Firefox 2.0.xでは動作しません。ライブラリは決して読み込まれません。誰もがFF 2.0と3.0の間discrepencyが何であるかを知ることが起こるん

<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.xの中にロードするために得るために、私は明示的に2つの余分な<スクリプト/ >タグ、すなわち、それらを参照する必要がありますそれはこの現象を引き起こす?私の問題に対して、より良い解決策がありますか?

ありがとうございました!

答えて

1

今日はあまりコーヒーを飲んでいたので、私はこれを行かせると思っています。 (scriptaculous.js?負荷=ビルダー、効果)をパラメータとして

一つの可能​​性は正しく、それに渡されたライブラリが含まれるように処理を行いませんscriptaculous.js負荷機能です。

プロセスは、おそらくそれはFF2上になっています何をしない、それがある場合scriptaculous.jsにおけるロード機能は、に入力されているかどうかを確認するために、アラートに入れてみてください:

load: function() { 
    alert('In the load function!'); 
    ...rest of code here... 

もしそうでなければ、(多分)firefox 2は負荷を実行したくありません。私ははそれだかどうかを確認し、ライブラリ名を解析する必要があり変数が含まれていることを見ることができ、上記のコードから

$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') }); 
    }); 

負荷の最後の部分は、他のlibsを含むために仕事をしているようですあなたに何が起こっているのより良いアイデアを与える必要があり

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> 
+0

あなたのご意見ありがとうございました!私はこれを打ち、結果をあなたに知らせます。 – AndreiM