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可能不是跨浏览器可靠的,因为每个浏览器都以自己的方式实现它。但可能有用