发新贴  快速回复

关于window.confirm 重构后,点确定无法执行下去。

xcondor
2015-01-05 18:02

window.confirm = function(msgstr){
    var h = document.documentElement.scrollHeight;
    var w = document.documentElement.scrollWidth;
    var dv = document.createElement("div");
    dv.setAttribute('id','bg');
    //设置样式
    dv.style.height = h + "px";
    dv.style.width = w + "px";
    dv.style.zIndex = "1111";
    dv.style.top = 0;
    dv.style.left = 0;

    //如果不想遮罩,可以去掉这两句
    dv.style.background = "#000";
    dv.style.background = "rgba(0,0,0,0.2)";

    //设为绝对定位很重要
    dv.style.position = "fixed";
    //将该元素添加至body中
    document.body.appendChild(dv);

    //创建提示对话框面板
    var dvMsg = document.createElement("div");
    var height=$(this).scrollTop(); 
    
    dvMsg.style.position = "absolute";
    dvMsg.setAttribute('id','msg');
    dvMsg.style.width = "380px";
    dvMsg.style.top="30%";
    dvMsg.style.left="40%";
    dvMsg.style.background = "e4393c";
    dvMsg.style.zIndex = "1112";
    
    strHtml =  "<table width='380' height='25' border='0' cellspacing='0' cellpadding='0' align='center'>"
    strHtml += "    <tr height='25' style='line-height:25px;'>"
    strHtml += "        <td width='350' title='移动' style='cursor:move;background:#e4393c;' err=='oMove(parentNode.parentNode.parentNode.parentNode);'>"
    strHtml += "            <font style='font-size:12px;font-weight:bold;color:#fff;margin-left:10px;'>消息提示框</font></td>"
    strHtml += "        <td width='30' style='background:#e4393c;' align='center'>"
    strHtml += "            <a style='margin-right:3px;font-size:14px;cursor:pointer;color:#fff;font-family:Verdana' err=='imgClose();'>X</a></td></tr>"
    strHtml +=  "</table>"
    strHtml +=  "<table width='380' height='145' border='0' cellspacing='0' cellpadding='0' align='center' style='border:1px solid #eee'>"
    strHtml += "    <tr height='113' style='background:#fff;'>"
    strHtml += "        <td width='360' align='center' style='font-size:12px;'>" + msgstr + "</td></tr>"
    strHtml += "    <tr height='50'><td colspan='2' style='background:#eee;padding-top:15px;' valign='top' align='center'>"
    strHtml += "         <input class='alert-btn-confirm' type='button' value='确定' style='width:70px;margin-right:20px;' err=='btnclick()' /><input class='alert-btn-cancel' type='button' value='取消' style='width:70px;' onclick='imgClose()' /></td></tr>"
    strHtml += "</table>"
    dvMsg.innerHTML = strHtml;
    document.body.appendChild(dvMsg);

    //点击关闭按钮
    imgClose = function (){
        alertValue = 2; // 2 代表点击了关闭按钮
        document.body.removeChild(dv);
        document.body.removeChild(dvMsg);
        
    }
    //点击确定按钮
    btnclick = function (){
        alertValue = 1; // 1 代表点击了确定按钮
        document.body.removeChild(dv);
        document.body.removeChild(dvMsg);
        console.log(alertValue);
    }
    
    
        
}


 
莫涛
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script>
window.confirm = function(msgstr){
    var h = document.documentElement.scrollHeight;
    var w = document.documentElement.scrollWidth;
    var dv = document.createElement("div");
    dv.setAttribute('id','bg');
    dv.style.height = h + "px";
    dv.style.width = w + "px";
    dv.style.zIndex = "1111";
    dv.style.top = 0;
    dv.style.left = 0;

    //如果不想遮罩,可以去掉这两句
    dv.style.background = "#000";
    dv.style.background = "rgba(0,0,0,0.2)";

    //设为绝对定位很重要
    dv.style.position = "fixed";
    //将该元素添加至body中
    document.body.appendChild(dv);

    //创建提示对话框面板
    var dvMsg = document.createElement("div");
    var height=0//var height=$(this).scrollTop(); 
    
    dvMsg.style.position = "absolute";
    dvMsg.setAttribute('id','msg');
    dvMsg.style.width = "380px";
    dvMsg.style.top="30%";
    dvMsg.style.left="40%";
    dvMsg.style.background = "e4393c";
    dvMsg.style.zIndex = "1112";
    
    strHtml =  "<table width='380' height='25' border='0' cellspacing='0' cellpadding='0' align='center'>"
    strHtml += "    <tr height='25' style='line-height:25px;'>"
    strHtml += "        <td width='350' title='移动' style='cursor:move;background:#e4393c;' err=='oMove(parentNode.parentNode.parentNode.parentNode);'>"
    strHtml += "            <font style='font-size:12px;font-weight:bold;color:#fff;margin-left:10px;'>消息提示框</font></td>"
    strHtml += "        <td width='30' style='background:#e4393c;' align='center'>"
    strHtml += "            <a style='margin-right:3px;font-size:14px;cursor:pointer;color:#fff;font-family:Verdana' err=='imgClose();'>X</a></td></tr>"
    strHtml +=  "</table>"
    strHtml +=  "<table width='380' height='145' border='0' cellspacing='0' cellpadding='0' align='center' style='border:1px solid #eee'>"
    strHtml += "    <tr height='113' style='background:#fff;'>"
    strHtml += "        <td width='360' align='center' style='font-size:12px;'>" + msgstr + "</td></tr>"
    strHtml += "    <tr height='50'><td colspan='2' style='background:#eee;padding-top:15px;' valign='top' align='center'>"
    strHtml += "         <input class='alert-btn-confirm' type='button' value='确定' style='width:70px;margin-right:20px;' err=='btnclick()' /><input class='alert-btn-cancel' type='button' value='取消' style='width:70px;' onclick='imgClose()' /></td></tr>"
    strHtml += "</table>"
    dvMsg.innerHTML = strHtml;
    document.body.appendChild(dvMsg);

    //点击关闭按钮
    imgClose = function (){
        alertValue = 2; // 2 代表点击了关闭按钮
        document.body.removeChild(dv);
        document.body.removeChild(dvMsg);
        
    }
    //点击确定按钮
    btnclick = function (){
        alertValue = 1; // 1 代表点击了确定按钮
        document.body.removeChild(dv);
        document.body.removeChild(dvMsg);
        console.log(alertValue);
    }        
}
</script>
</head>
<body>
<script>
window.confirm("天气不错哈");
</script>
</body>
</html>


chrome下测试没啥问题
2015-01-06 01:13  回复本帖
xcondor
forum.php?mod=redirect&goto=findpost&pid=34515&ptid=11242
chrome下测试没啥问题

老是,我再另外的地方是这样调用的:
$('#saveAndNext').click(function(){
                    var title= $("h1[name='s_title']").html();
                    var remark= $("p[name='s_remark']").html();
                    if(title.indexOf("模板")>=0){
                        if(window.confirm("您还未修改标题。确定要继续?")){
                        }else{
                            return;
                        }    
                    }
                    if(remark=='您好'){
                        if(window.confirm("您还未修改欢迎语。确定要继续?")){
                        }else{
                            return;
                        }
                    }
                    if(that.editArea){
                        if(that.editArea.find('[validate]').attr('through') == "false"){
                            alert("是");
                            return;
                        }
                    }
                    if(that.totalQuestion == 0) {
                        alert("统计");
                        return;
                    }
                    window.location.href = '/collect/sampleOption.htm?eSurveyId='+that.survey.eSurveyId;
                });老师,我再另外的地方是这样调用的,为什么confirm框点了确定不执行window.locaiton.href? 


2015-01-06 16:37  回复本帖
 
莫涛
window.confirm();函数没有返回值啊,你判断啥?
2015-01-06 16:44  回复本帖
xcondor
forum.php?mod=redirect&goto=findpost&pid=34554&ptid=11242
window.confirm();函数没有返回值啊,你判断啥?

判断有无修改,修改就跳过直接window.location

我改如何加有返回值的呢?
2015-01-06 16:46  回复本帖
xcondor
是需要改我重构的window.confirm 还是修改调用的时候的判断。
2015-01-06 16:48  回复本帖
 
莫涛
都需要调整 你再点击的时候,才能拿到判断,那点击之后才能执行判断啊,所以现在的这个逻辑有问题
2015-01-06 16:50  回复本帖
xcondor
forum.php?mod=redirect&goto=findpost&pid=34558&ptid=11242
都需要调整 你再点击的时候,才能拿到判断,那点击之后才能执行判断啊,所以现在的这个逻辑有问题 ...

求教,应该如何处理? 
现在是点击之后再判断的。

2015-01-06 16:52  回复本帖
 
莫涛
恩 ,你可以把点击 确定或者取消的之后 要处理的东西 穿进去,然后,再点击的时候 再去调用参数执行
2015-01-06 16:59  回复本帖
xcondor
forum.php?mod=redirect&goto=findpost&pid=34562&ptid=11242
恩 ,你可以把点击 确定或者取消的之后 要处理的东西 穿进去,然后,再点击的时候 再去调用参数执行 ...

老师,能否再说详细点呢? 写在我重构的函数中去?还是?

2015-01-06 17:03  回复本帖
 
莫涛
window.confirm = function(msgstr,fn) 再加几个参数 ,点击之后去调用
2015-01-06 18:12  回复本帖
登录 后才可以发表回复