<script type="text/javascript"> 
window.confirm=function(s){return Test(s);};function Test(s){    /*解析请求函数代码*/
    var script=Test.caller.caller.toString().replace(/(\s|\n)*/ig,"");    
    /.*?confirm\(.*?\)+\{?(.*?)\}?else\{?(.*?)\}+/ig.test(script);
    
    /*参数*/
    alert(s);
    
    /*确定时执行*/
    eval(RegExp.$1);
    
    /*取消时执行*/
    eval(RegExp.$2);
    
    /*想已此方式跳出onload,未果*/
    Test.caller.caller.break;
    Test.caller.caller.return;
    
    /*返回值*/
    return false;
}
window.onload=function(){
    if(confirm("sss")){
        alert(1);
    }else{
        alert(2);
    }
};
</script> 
说明:
想通过函数模拟confirm来美化对话框,但又不想将confirm改的面目全非,即不想在重写后对调用产生影响问题:
执行到confirm时如何阻止onload继续执行。

解决方案 »

  1.   

        /*想已此方式跳出onload,未果*/
        Test.caller.caller.break;
        Test.caller.caller.return;这两句是 lz 异想天开吧!confirm 本身是一种特殊的浏览器窗口,而非函数!可以使用 div 重新定义 confirm,至于执行的事件可以定义在 ok 和 cancel 的 onclick 事件中! 
      

  2.   


    以其他形式重写confirm是没问题的,但需要改变传统confirm的写法,就是想向大家请教下有没有什么方法能直接跳出函数,而对已经有的如:if(confirm("sss")){
            alert(1);
        }else{
            alert(2);
        }的结构不被改变的写法.