2012-03-01 11 views
1

私は時々この問題にぶつかり、解決方法はわかりません。alert()を使用しない限りJavaScriptは機能しません!

function on_lightbox_open() { 

    system.contextBrowserInit(); 

    updateUrl(year + '/' + month + '/' + id); 
    ads.reload(); 
    system.analytics.reload(); 

    FB.XFBML.parse($('#bottom_flap .fb_like').get(0)); // facebook 
    $.ajax({ url: 'http://platform.twitter.com/widgets.js', dataType: 'script', cache: true }); 

    $('#lightbox .close').live('click', function(){ 
     $.modal.close(); 
    }); 
} 

を、私はそうのように初めに警告を追加した場合::

function on_lightbox_open() { 

    alert('i work now'); 

    system.contextBrowserInit(); 

    updateUrl(year + '/' + month + '/' + id); 
    ads.reload(); 
    system.analytics.reload(); 

    FB.XFBML.parse($('#bottom_flap .fb_like').get(0)); // facebook 
    $.ajax({ url: 'http://platform.twitter.com/widgets.js', dataType: 'script', cache: true }); 

    $('#lightbox .close').live('click', function(){ 
     $.modal.close(); 
    }); 
} 

それは魔法のように動作します。ここ失敗した私のコードです。どのように迷惑なランダムなアラートなしで動作させるには?

+4

競合状態です。アラートに遅延が発生し、最初に実行する処理時間が残ります。アラートがなければ、他のプロセスは後で実行されます。 –

+3

あなたのコードの他の部分を含む競合状態のように見えます。 –

+0

何が問題なのですか? – jrummell

答えて

1

おそらく、.live()の使用には完全に読み込まれたドキュメントが必要で、アラートはブラウザに余分な時間を掛けるだけです。 $(document).ready();で囲みます。

出典:jQuery-driven app. won't work without alert()

+1

良い提案。それがうまくいかないときに見えるものに関するいくつかの情報が役立つかもしれません。 –

0

の代わりに:

<script> 
    system.contextBrowserInit(); 
    //etc 
</script> 

は、この(HTMLのDOCTYPEを)試してみてください:XHTMLのDOCTYPEのため

<script defer> 
    system.contextBrowserInit(); 
    //etc 
</script> 

正しい構文は

<script defer="defer"> 
    system.contextBrowserInit(); 
    //etc 
</script> 
+0

Deferは、ブラウザごとに信頼できるものではなく、それぞれ独自の方法で実装します。しかし働くかもしれない – Alfabravo