bug笔记之——setTimeout
2012-02-15 16:03 呦菜 阅读(281) 评论(0) 编辑 收藏 举报写了这样一段代码:
//应用jquery UI的弹出层
$('#dialog p').html(msg.msg);
$('#dialog').dialog('open');
setTimeout(“$('#dialog').dialog('close');”,2000);
location.reload();
本意是弹出层在两秒后自动关闭,然后再刷新页面,但是结果发现在ie 中根本不弹出就刷新了,产生这一悲剧的是没有了解setTimeout的工作原理
Javascript中的函数调用是通过堆栈实现的。
$('#dialog').dialog('open');
setTimeout(“$('#dialog').dialog('close');”,2000);
location.reload();
在执行这段代码的时候,$('#dialog').dialog('open');先入栈,如果没有setTimeout的话应该是$('#dialog').dialog('close');入栈,最后是location.reload();入栈,但是现在给$('#dialog').dialog('close');加上了setTimeout后,$('#dialog').dialog('close');就被放在一个新的栈中等待,于是就先执行了location.reload();
这就是我的页面还没有弹出层就刷新页面的原因啦~~以后要多加注意!