(一)可以用下面js代码来检测弹出窗口是否被屏蔽:
var blocked = false ; try { /*window.open()方法接受4个参数window.open(要加载的url,窗口目标,一个特性字符串,表示新页面是否取代浏览器历史记录中当前加载页面的布尔值)*/ /*窗口目标还可以是_self,_parent ,_top, _blank*/ var wroxWin = window.open("http://www.baidu.com","_self"); if(wroxWin == null){ blocked = true; } }catch(ex){ blocked = true ; } if(blocked){ alert("The popup was blocked"); }
(二)Javascript是单线程语言,可以通过超时调用和间歇调用调度代码(javascript有一个任务队列,顺序执行)在特定的时间执行,一般认为,使用超时调用来模拟间歇调用是一种最佳的方式,因为后一个间歇调用可能会在前一个间歇调用结束之前调用。
/*使用超时调用模拟间歇调用*/ var num = 0; var max = 10; function incrementNumber(){ num++; /*如果执行次数未达到max设定的值则另一次超时调用*/ if(num<max){ setTimeout(incrementNumber,500); }else{ alert('Done'); } } setTimeout(incrementNumber,500);