function loadScript(url, callback){ var script = document.createElement ("script") script.type = "text/javascript"; if (script.readyState){ //IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(); } }; } else { //Others script.onload = function(){ callback(); }; } script.src = url; document.getElementsByTagName("head")[0].appendChild(script);}
使用方法如下:loadScript("script1.js", function(){ loadScript("script2.js", function(){ loadScript("script3.js", function(){ alert("All files are loaded!"); }); });});
大家都能看明白,我就不多说了,但是这时候呢,IE8还是没法跳转过去,其他浏览器或许是高版本的原因都可以了,我就想了,能不能搞一个alert然后提示一下自动关闭,查了半天,发现完全不可以,效果是可以模拟出来,代码如下(网上有很多,这只是其中一个,这不是重点,重点是它不能达到阻塞效果,我这里只是拿来举例,这是JS加CSS版本的,):
JS+CSS版本
*{ padding:0; margin:0; font-size:12px;}#bg{background:#000000;opacity: 0.5;-moz-opacity:0.5; filter:alpha(opacity=60); width:100%; height:100%;position:absolute; top:0; left:0}#info{height:0px; width:0px;top:50%; left:50%;position:absolute; line-height:1.7}#center{background:#fff;border:1px solid #217AC1; width:300px; height:100px; position:absolute; margin:-50px -150px;}#center strong{ display:block; padding:2px 5px; background:#EBF4FC; color:#519FEE;}#center p{padding:10px; text-align:center; color:#1C6FB8;}</style></head><body><span id="boxs"></span><script>function boxs(v){ window.scrollTo(0,0); var bo = document.getElementsByTagName('body')[0]; var ht = document.getElementsByTagName('html')[0]; var boht = document.getElementById('boxs'); boht.innerHTML = ''; bo.style.height='auto'; bo.style.overflow='auto'; ht.style.height='auto'; if(v == 1){ bo.style.height='100%'; bo.style.overflow='hidden'; ht.style.height='100%'; boht.innerHTML = '<div id="bg"></div><div id="info"><div id="center"><strong>信息提示:</strong><p><a href="javascript:boxs(0);">关了我吧!</a></p></div></div>'; }} boxs(1);</script><a href="javascript:boxs(1);">点这里弹出</a>
模态窗口版本
window.showModalDialog('xxx.html');
这个是模态窗口,能达到效果,但是很丑,几乎不可能运用到实际项目当中,于是另一个想法
三、JS函数劫持
举例如下:
var _alert = alert;
window.alert = function(s) {
if (confirm("是否要弹窗,\"" + s + "\"?")) {
_alert(s);
}
}
参见:浅谈javascript函数劫持
大概意思就是我们以前说的重写,覆盖啊,重构啊,什么的,通过这种方法能不能实现阻塞浏览器,然后再自动关闭呢,我试了几次,没成功,不知道有高手能解决不
四、模态窗口,函数回调
(未完待续...)
联系客服