2012-03-01 3 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의 문서 타입)을보십시오 : XHTML의 문서 타입에 대한

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

올바른 구문은

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

각각의 브라우저가 고유 한 방식으로 구현되므로 Defer는 브라우저 간 신뢰할 수 없습니다. 그러나 일할 수도있다. – Alfabravo

관련 문제