2010-12-19 3 views
2

jQuewy(http://jquewy.com)ライブラリと同じように、スクリプトを読み込むhead.js(http://headjs.com)用の関数をビルドします。しかし、私はいくつかのブラウザでかなり狂ったエラーを取得しています。所望の結果はjQueryのバージョンのロードと警告を得ることです:Firefoxのでhead.jsの関数を作成すると、さまざまなブラウザでかなりワイルドなエラーが発生する

(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; 
    } 

})(); 

、私が手:

$はライン39

しかし、たとえ奇妙、で定義されていませんスクリプトのタグがロードされていますが(<script type="text/javascript" src="http://jquewy.com/dev/headjs/?name=ui&rand=717786"></script>)、Firebugには次のように書かれています:

ソースのロードに失敗しました: hxxp://jquewy.com/dev/headjs/名= UI &ランド= 717786明らかに細かい解決

?。 Chromiumではスクリプトタグを読み込むことさえありません。他のブラウザを見ても気にしませんでした。なぜなら、それが2つのチャンクではうまくいかないと、他のブラウザでは動作しないからです。

現在のソースを見てみることができます:http://jquewy.com/dev/static/headjs/test/

編集:あなたはURLを覚えておく必要がないように、この点を知りたい人のため、ポイントがある - 私は別のものを移植していますがjQuewyという名前でビルドされたサービスは、名前に基づいてライブラリをロードすることで素早いプロトタイプ作成を可能にします。私のサービスは自動的に最新のソースを取得し、自動的にページに埋め込みます。 head.jsは似たようなことをする別のスクリプトです(しかし、もっと普及しています)。そのため、エンドユーザはスクリプトの読み込み方法を選択できるように、サービスを互換にしたいと考えています。

編集#2:リンクのハードコーディングで同じエラーが発生しているようです。私のサーバはリダイレクトを使って正しいスクリプトを指しています。この動作は正常ですか?ブラウザに依存しない回避策がありますか?

+0

head.jsに配列を渡すことは、明示的に想定されていないか、そのコードでサポートされていないようです。それは私が推測するかもしれない*かもしれない。 – Pointy

+0

@Pointy、この状況でどのように返されますか?私はhead.jsの部分を非常にきれいでシンプルに保ち、全ての複雑さをそこから遠ざけたいと思っています。ありがとう –

+0

また、そのテストページで、Chromeは「jQueryが定義されていません」と「$が定義されていません」という2つのエラーを表示します。 – Pointy

答えて

1

jQueryの$エイリアスが設定されていないため、エラーが発生します。 スクリプトが正常に読み込まれました。確認するには、

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

などを呼び出します。できます。 したがって、エイリアスを自分で設定する必要があります。例:

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

ご覧のとおり、エラーはありません。

ところで、$ aliasは任意のライブラリを設定できるので、競合解消の仕組みを提供する必要があります。 jQuery.noConflict()と同様です。

+1

P. http://headjs.com/test/headjs.html同じエラーです。著者のheadjsは、スクリプトの読み込みをしているが操作していない例を示しています。だから、libは期待どおりに動かない、IMHO。 – Lex

+0

ありがとう、私のスクリプトではないように見えます。この記事をheadjsの上の人に転送します。 –

関連する問題