2011-12-20 12 views
0

私たちは、ページのポストバックが成功した後、ページロードイベントで、ファンシーボックス内にメッセージを表示しようとしています。我々はの.csファイルにASP.NET.HereのコードのPage.RegisterClientScript方法を使用してページにスクリプトを登録されていますjQuery document.ready strange behavior

Page.ClientScript.RegisterStartupScript(GetType(), "Script", "ShowPopup('popup');", true); 

ここjavsacript機能ShowPopupです:

function showPopup(p) { 
    ShowFancyBoxDiv("#divMessage", 50, 300); 
} 

しかし、我々これを行うと、ウィンドウのビューの最初のページだけがグレイアウトされ、下にスクロールすると、ページの残りの部分はまだアクティブであり、グレーではありません。

しかし、以下に示すようにタイマーを追加すると、すべて正常に動作します。

$(document).ready(function() { 
    setTimeout(function() { 
     ShowFancyBoxDiv("#divMessage", 50, 300); 
     $("#fancybox-close").css("display", "none"); 
    }, 1000); 
}); 

だから誰でもここで何が起こっているのか説明できますか。 document.readyは自動的にドキュメントが完全にロードされていることを確認する必要があります。なぜ、そのタイマ関数を使用する必要がありますか?ありがとう。

答えて

0

イメージのような要素が読み込まれている可能性があります。 Readyは、DOMが準備完了であることを意味します。あなたが言うようにすべてがロードされたということではありません。必要なら、.loadを使用してください。

$(window).load(function() { 
    //code 
}); 

このウェブサイトは、この記事と対比していい記事です。

http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/

+0

DID NOT WORK あなたは次のような意味を持っていました:$(document).load(function(){ShowFancyBoxDiv( "#divMessage"、50、300);}); これを使用すると、理由は分かりませんが、ShowFancyBoxDiv()は起動されません。 さらに、1秒のタイムアウトを使用していても、ページのさまざまな要素が読み込まれています(ファイヤーバグの[ネット]タブで検査した場合)が、まだファンシーボックスが正しく表示されます。だから、私は、問題は何か他のものでなければならないと信じています。 – MrClan

+0

@PratikChandra - 申し訳ありませんが、私のコードにエラーがありました。代わりに$(window).loadを使用して今すぐ試してみてください。 – mrtsherman

+0

ありがとう、それは働いた。 – MrClan