Javascript 韩元';除非我使用alert(),否则无法工作!

Javascript 韩元';除非我使用alert(),否则无法工作!,javascript,jquery,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)); //

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

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();
    });
}
它神奇地工作。如何让它在没有恼人的随机警报的情况下工作

使用.live()可能需要一个完全加载的文档,而此警报只会为浏览器赢得一些额外的时间。尝试使用$(document.ready()

来源:

也许您使用.live()需要一个完全加载的文档,而此警报只会为浏览器赢得一些额外的时间。尝试使用$(document.ready()

来源:

而不是:

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

system.contextBrowserInit();
//等
尝试以下操作(HTML doctype):


system.contextBrowserInit();
//等
XHTML doctype的正确语法为

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

system.contextBrowserInit();
//等
而不是:

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

system.contextBrowserInit();
//等
尝试以下操作(HTML doctype):


system.contextBrowserInit();
//等
XHTML doctype的正确语法为

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

system.contextBrowserInit();
//等

Race条件。您的警报会引入延迟,这会让其他进程有时间首先执行。如果没有警报,其他进程将在稍后执行。这看起来像是一个涉及代码其他部分的竞争条件。@Jim Blackler将代码置于设置的超时内,延迟1000毫秒,这样做有效。在大多数硬件上仍然可以工作的情况下,有什么好的数字可以减少这一点呢?我能在50毫秒或更短的时间内逃脱吗?@JakeRow123:理想情况下,你应该正确地链接回调,而不是试图有一个任意的、容易出错的延迟。竞争条件。您的警报会引入延迟,这会让其他进程有时间首先执行。如果没有警报,其他进程将在稍后执行。这看起来像是一个涉及代码其他部分的竞争条件。@Jim Blackler将代码置于设置的超时内,延迟1000毫秒,这样做有效。在大多数硬件上仍然可以工作的情况下,有什么好的数字可以减少这一点呢?我能在50毫秒或更短的时间内离开吗?@JakeRow123:理想情况下,你应该正确地链接回调,而不是试图有一个任意的、容易出错的延迟。好建议。如果做不到这一点,一些关于当它不起作用时你所看到的东西的信息可能会有所帮助。很好的建议。如果做不到这一点,一些关于当它不起作用时所看到的内容的信息可能会有所帮助。但Workefer可能不是跨浏览器可靠的,因为每个浏览器都以自己的方式实现它。但可能有用