2013-04-19 4 views
12

私はウェブページ上でいくつかの奇妙な動作を見ています...私はjQuery(およびjQuery UI)を通常のスクリプトタグを使って含んでいます。ページが読み込まれると、ファイルがロードされていることがわかります(ファイルに遠い未来のExpiresヘッダーがあるため、ローカルブラウザのキャッシュから)。jQueryを自分で組み込んだ後にjQueryを「リロード」(Ajax経由)するのはなぜですか?

しかし、jQuery自体が、ファイルをダウンロードさせる(つまりキャッシュされたバージョンを使用しない)ランダムなパラメータ値を含め、新しいネットワーク要求を再度開始するように思われます。

は、Chromeのネットワーク]タブからスクリーンショット:これは非常に奇妙な...ここで何が起こっているされて

jQuery loading itself... ?

UPDATE:この動作をトリガーされるコードは次のとおりです。

$(window).load(function() { 
    $("#t20ContentRightWrapper").toggle("slide", { direction: "right" }, 400); 
    }); 

私が代わりにこれに変更した場合は、 "ダブル・ロード" は消える:

$(window).load(function() { 
     $("#t20ContentRightWrapper").toggle("fade", 400); 
    }); 

つまり、基本的に、「スライド」アニメーションを使用している場合、「フェード」アニメーションを使用している間は、jQueryとjQuery UIに余分なネットワーク要求が再ロードされます。

「スライド」アニメーションを使用したいので、ここで何が起こっているのかを知る必要があります。

UPDATE 2:ここChromeで「イニシエータ」スクリプトの上にマウスを移動するときのコールスタックを示してスクリーンショットです:

Detail

+0

あなたが別のライブラリを使用しないでくださいそれらを動的にロードしますか?多くのライブラリはjQueryを使用しています。 –

+1

あなたのページを表示できますか? –

+0

'$ .getScript()'コールのようです。 –

答えて

0

あなたは、コールバックの内容を確認しましたか?私はそれが明らかに聞こえるが、jQueryライブラリがhtmlに含まれていないことを確認していることを知っているajaxコールバックから返される。それは、それが2回ロードされる最も一般的な理由です。コールバックの応答を確認し、そこからロードされているかどうかを確認します。

+0

どのコールバックを参照していますか?私は自分でAjaxリクエストを開始していませんが、私がやっていることは.toggle( "slide")関数を呼び出すことだけです。それはAjax呼び出しをトリガーするようです... – ObiWanKenobi

0

私の推測では、jQueryののコードが存在することである、全ページのコードなしで言うのは難しいですが切り替えコンテナ

0

内にある含まuが多分何かのように、slideToggle()を使用して試してみました:

$(window).load(function() { 
    $("#t20ContentRightWrapper").slideToggle(); 
    }); 

slideToggle運動効果のデフォルトは400とにかく

0

jQueryのドキュメントは.load()方法については、以下の警告がありますされて -

Ajaxモジュールには、.load()という名前のメソッドもあります。どちらが解雇されるか は渡された引数のセットによって決まります。

あなたが任意のあいまいさを排除する代わりに

$(window).on("load", function(){ 
    $("#t20ContentRightWrapper").toggle("slide", { direction: "right" }, 400); 
}); 
1

これを試みることができるまた、

$(function() { 
    $("#t20ContentRightWrapper").toggle("slide", { direction: "right" }, 400); 
}); 
0

を試してみてくださいあなたは、単純な段落と#t20ContentRightWrapperの内容を交換しようとしたことがありますか?それが修正されれば、違反のビットを見つけるためにコンテンツの一部を取り出すことができます。同じIDの2つの要素があるかもしれません。また、jquery.jsファイルをダウンロードして置き換えることもできます。あなたはまだgithubから1.7.1を得ることができます。しかし、私は現在のバージョンも試してみて、それがあなたのものならばそれを破らなければそれを保つだろう。

問題が解決しない場合は、どのブラウザ/ OSとバージョンでこの問題を再現できるのですか?

0

ロード機能は、私はあなたが期待していると考えるものとは別の何かを意味します

このメソッドは、サーバーからデータを取得する最も簡単な方法です。 $ .get(url、data、success)と大体同じですが、グローバル関数ではなくメソッドであり、暗黙的なコールバック関数を持っています。成功したレスポンスが検出されると(つまり、textStatusが "success"または "notmodified"の場合)、.load()は一致した要素のHTMLコンテンツを返されたデータに設定します。これは、メソッドのほとんどの用途は非常に単純なことができることを意味します

多分あなたの代わりにこれを使用したい:

`

$(function() { 
    $("#t20ContentRightWrapper").toggle("slide", { direction: "right" }, 400); 
    }); 

`

関連する問題