除非我使用alert(),否则JavaScript将无效!

时间:2012-03-01 21:00:11

标签: javascript jquery

我经常遇到这个问题,我不知道如何解决它。这是我的代码失败:

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

它神奇地起作用。如何在没有恼人的随机警报的情况下使其工作?

2 个答案:

答案 0 :(得分:1)

也许您使用.live()需要一个完全加载的文档,警报只需要额外的时间购买浏览器。尝试使用$(document).ready();

来源:jQuery-driven app. won't work without alert()

答案 1 :(得分:0)

而不是:

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

试试这个(HTML doctype):

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

XHTML doctype的正确语法是

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