如何重写 alert,confirm,prompt

agclqq 2010-12-30 05:09:12
功能要求:
1.仅仅重写如题三种方法的界面,使之在各浏览器中显示效果一致
2.对于上述方法中的某些方法的断点特性,要保留。比如alert();执行时,不点击确定按钮,在此方法后面的代码不执行。
3.重写后的方法,要尽量与原始js的方法的用法,切不可使原有程序有大的改动。
4.最大的愿望就是只是对方法名的改动,顶多再多加一两个参数。
5.可以用jquery来重写,如果仿官方的例子就免了。
6.再次拜谢了。


//比如重写前的alert()常用方法为:
alert("这是一个输入框");

//重写后想得到用法为:
alerts("这是一个输入框");

//-----------------------------

/比如重写前的confirm()常用方法为:
if(confirm("确定删除吗?"))
{
//点击确定后执行的内容
}
else
{
//点击取消后执行的内容
}

//重写后想得到用法为:
if(confirms("确定删除吗?"))
{
//点击确定后执行的内容
}
else
{
//点击取消后执行的内容
}
...全文
1961 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
agclqq 2011-03-01
  • 打赏
  • 举报
回复
目前的情况是,除非改写程序结构,使用回调函数,其他我还未找到可行的方法。
我同意13楼的看法。
jquery的dialog插件,也不错,可以选择一下。
我现在改用了一个前人写的一个jquery的插件,具体名字忘了,发下代码,看一下吧

(function($) {

$.alerts = {
alert: function(title, message, callback) {
if( title == null ) title = 'Alert';
$.alerts._show(title, message, null, 'alert', function(result) {
if( callback ) callback(result);
});
},

confirm: function(title, message, callback) {
if( title == null ) title = 'Confirm';
$.alerts._show(title, message, null, 'confirm', function(result) {
if( callback ) callback(result);
});
},

prompt: function(title, message, value , callback) {
if( title == null ) title = 'Prompt';
$.alerts._show(title, message, value, 'prompt', function(result) {
if( callback ) callback(result);
});
},
_show: function(title, msg, value, type, callback) {
if($("#gray").length<1)
{
var grayhtml='<!--弹出层开始-->';//自己定义了样式和显示效果
grayhtml+='<div id="gray" class="undis">';
grayhtml+='<div id="login" style="margin-top:0;">';
grayhtml+='<div class="login">';
grayhtml+='<div class="title"></div>';
grayhtml+='<div class="clear"></div>';
grayhtml+='<div class="con"></div>';
grayhtml+='<div class="foot"></div>';
grayhtml+='</div>';
grayhtml+='</div>';
grayhtml+='</div>';
grayhtml+='<!--弹出层结束-->';
$("body").prepend(grayhtml);
}
$("#gray").height(document.body.scrollHeight);
$("#gray .title").html(title);
$("#gray .con").html(msg);
$("#gray").removeClass("undis");
$("#gray").addClass("dis");
switch( type ) {
case 'alert':
$("#gray .foot").html('<input type="button" value="确定" id="popup_ok" /> ');
$("#popup_ok").click( function() {
$.alerts._hide();
callback(true);
});
$("#popup_ok").focus().keypress( function(e) {
if( e.keyCode == 13 || e.keyCode == 27 ) $("#popup_ok").trigger('click');
});
break;
case 'confirm':
$("#gray .foot").html('<input type="button" value="确定" id="popup_ok" />  <input type="button" value="取消" id="popup_cancel" />');
$("#popup_ok").click( function() {
$.alerts._hide();
if( callback ) callback(true);
});
$("#popup_cancel").click( function() {
$.alerts._hide();
if( callback ) callback(false);
});
$("#popup_ok").focus();
$("#popup_ok, #popup_cancel").keypress( function(e) {
if( e.keyCode == 13 ) $("#popup_ok").trigger('click');
if( e.keyCode == 27 ) $("#popup_cancel").trigger('click');
});
break;
case 'prompt':
$("#gray .con").append('<br /><input type="text" size="30" id="popup_prompt" />');
$("#gray .foot").html('<div id="popup_panel"><input type="button" value="确定" id="popup_ok" />  <input type="button" value="取消" id="popup_cancel" /></div>');
$("#popup_ok").click( function() {
var val = $("#popup_prompt").val();
if(val)
{
$.alerts._hide();
if( callback ) callback( val );
}
else
{
var err='<span class="prompterr">'+img_check_error+'不能为空!</span>';
if($(".prompterr").length<1)$("#gray .con").append(err);
}
});
$("#popup_cancel").click( function() {
$.alerts._hide();
if( callback ) callback( null );
});
$("#popup_prompt, #popup_ok, #popup_cancel").keypress( function(e) {
if( e.keyCode == 13 ) $("#popup_ok").trigger('click');
if( e.keyCode == 27 ) $("#popup_cancel").trigger('click');
});
if( value ) $("#popup_prompt").val(value);
$("#popup_prompt").focus().select();
break;
}
},
_hide: function() {
$("#gray").removeClass("dis");
$("#gray").addClass("undis");
}
}
// Shortuct functions
zfalert = function(title, message, callback) {
$.alerts.alert(title, message, callback);
}

zfconfirm = function(title, message, callback) {
$.alerts.confirm(title, message, callback);
};

zfprompt = function(title, message, value, callback) {
$.alerts.prompt(title, message, value, callback);
};
})(jQuery);

调用时也比较方便


zfalert('提示标题','消费次数必须大于0!',function(){$("input[name='discount_postnum']").select();});

zfconfirm('提示标题','提示信息',function(r){
if(r)
{
//...点确定之后执行的内容
}
});

zfprompt('提示标题','提示信息', '', function(){});


此插件来源于互联网

好了,结贴,给分,大家辛苦了!
wthua 2011-01-18
  • 打赏
  • 举报
回复
用jquery的dialog框代替
hch126163 2011-01-18
  • 打赏
  • 举报
回复
楼主的想法不错!不过实现不了

div 模拟,是不可能实现 模式对话框的!


通常用div 模拟 confirm

都是传递 : 标题,内容,确定时执行的函数,取消(关闭)时执行的函数来实现的!

绝对实现不了:

if(confirm("确定删除吗?"))
{
//点击确定后执行的内容
}
else
{
//点击取消后执行的内容
}




下面是一个 例子:
http://blog.csdn.net/hch126163/archive/2010/11/05/5989554.aspx
madpc 2011-01-18
  • 打赏
  • 举报
回复
两种方法都有问题

div:不能模态
模态窗口:非标准,只在ie下有效
汉尼拔 2011-01-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cj205 的回复:]
sorry u can't
用div模拟对话框吧
[/Quote]

+++++
gucong3000 2011-01-07
  • 打赏
  • 举报
回复
prompt改变为
msg(msgStr,function(value){
alert(您输入的值:+ value);
},defaultStr);

confirm改变为
msg(msgStr,function(value){
if(value){
//点击了是
}else{
//点击了否
}
});

alert改变为
msg(msgStr);

IE太麻烦了,暂时还不支持。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>baoti</title>
<style type="text/css">
#dialogbg {
top: 0;
left: 0;
width: 100%;
height: 100%;
position: fixed;
background: rgba(0,0,0,.2);
background: #0005;
}
.dialog {
width: auto;
text-align: left;
position: absolute;
min-width: 150px;
background: white;
border: 1px solid #666;
box-shadow: 2px 2px 6px rgba(0,0,0,.75);
-moz-box-shadow: 2px 2px 6px rgba(0,0,0,.75);
-webkit-box-shadow: 2px 2px 6px rgba(0,0,0,.75);
}
.dialog,.dialog btns>* {
border-radius: 5px;
-moz-border-radius: 5px;
-khtml-border-radius: 5px;
-webkit-border-radius: 5px;
behavior: url(../iefix/ie-css3.htc);
}
.dialog btns>*,.dialog .winbtns>* {
display: inline-block;
}
.dialog .title {
height: 20px;
cursor: default;
padding: 0 2px;
overflow: hidden;
line-height: 20px;
background: #0095cd;
border: solid 1px #0076a3;
border-radius-topleft: 5px;
border-radius-topright: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
-webkit-border-top-left-radius: 5px;
-webkit-border-top-right-radius: 5px;
background: -moz-linear-gradient(top, #00aaee, #0066cc);
background: -webkit-gradient(linear, left top, left bottom, from(#00aaee), to(#0066cc));
}
.dialog .title img{
max-width: 16px;
max-height: 16px;
margin: 0px 5px;
}
.dialog .winbtns {
top: 0;
right: 0;
position: absolute;
}
.dialog .winbtns>* {
display: inline-block;
width: 16px;
height: 15px;
overflow: hidden;
margin-top: 3px;
margin-right: 3px;
background: url(btns.gif);
}
.dialog .winbtns .min {
background-position: 0 120px;
}
.dialog .winbtns .min:hover {
background-position: 0 105px;
}
.dialog .winbtns .size {
background-position: 0 90px;
}
.dialog .winbtns .size:hover {
background-position: 0 75px;
}
.dialog .winbtns .max {
background-position: 0 60px;
}
.dialog .winbtns .max:hover {
background-position: 0 45px;
}
.dialog .winbtns .close {
background-position: 0 30px;
}
.dialog .winbtns .close:hover {
background-position: 0 15px;
}
.dialog .content {
margin: 10px;
}
.dialog input {
width: 100%;
}
.dialog .btns {
text-align: center;
margin: 10px 0;
}
.dialog .btns a {
color: #000;
width: 50px ;
height: 20px ;
margin: 0 5px;
text-decoration: none;
border: 1px solid #CCC;
}
#dialogbg, .dialog,.dialog .winbtns .size,.dialog input {
display: none ;
}
</style>
</head>
<body>
gdfgioersjkgti
<script type="text/javascript" src="../ie7/IE9.js"></script>
<script>
var dialogbg;
if(!dialogbg){
document.write('<div id="dialogbg"><div class="dialog"><div class="title"><img src="../../iboy.gif" width="9" height="12">TITLE</div><div class="winbtns"><a class="min" title="最小化" href="#"></a><a class="size" title="向下还原" href="#"></a><a class="max" title="最大化" href="#"></a><a class="close" title="关闭" href="#"></a></div><div class="content">fdgdfdfgfdgdfgdfgdfgdfgdfgdgdfgg<input type="text"></div><div class="btns"><a class="ok" href="#">确定</a><a class="cancel" href="#">取消</a></div></div></div>');
dialogbg = document.getElementById("dialogbg");
}
var dialog = dialogbg.firstChild;
var titleBar = dialog.firstChild;
var winbtns = titleBar.nextSibling;
var content = winbtns.nextSibling;
var textBox = content.lastChild;
var btns = content.nextSibling;
var btnMin = winbtns.firstChild;
var btnSize = btnMin.nextSibling;
var btnMax = btnSize.nextSibling;
var btnClose = btnMax.nextSibling;
var btnOk = btns.firstChild;
var btnCancel = btns.lastChild;
btnMin.hideFocus = true;
btnSize.hideFocus = true;
btnMax.hideFocus = true;
btnClose.hideFocus = true;
btnOk.hideFocus = true;
btnCancel.hideFocus = true;

var onDrag;
var pos = {};

function rsSize(){
pos.top = (dialogbg.offsetHeight - dialog.offsetHeight) / 2;
pos.left = (dialogbg.offsetWidth - dialog.offsetWidth) / 2;
dialog.style.width = dialog.style.height = "auto";
dialog.style.left = pos.left + "px";
dialog.style.top = pos.top + "px";
}

var callBackFun;
var returnValue;

function dialogClose(){
dialogbg.style.display = dialog.style.display = "none";
document.documentElement.style.overflow = "auto";
if(callBackFun){
callBackFun(returnValue);
}
return false;
}

btnClose.onclick = btnCancel.onclick = dialogClose;

btnMax.onclick = function(){
dialog.style.top = dialog.style.left = 0;
btnSize.style.display = "inline-block";
btnMax.style.display = "none";
dialog.style.height = "100%";
dialog.style.width = "100%";
return false;
}

btnSize.onclick = function(){
btnMax.style.display = "inline-block"
btnSize.style.display = "none";
rsSize();
return false;
}

btnOk.onclick = function(){
if(callBackFun){
if(textBox.style.display == "none"){
returnValue = true;
}else{
returnValue = textBox.value;
}
}
dialogClose();
return false;
}

titleBar.onmousedown = function(){
onDrag = true;
}

titleBar.onmouseup = function(){
onDrag = false;
}
titleBar.onselectstart = function(){
return false;
}
dialogbg.onmousemove = function(e){
if(!e){
e = window.event;
e.pageX = e.clientX + document.body.scrollLeft;
e.pageY = e.clientY + document.body.scrollTop;
}
if(onDrag == true){
pos.top += e.pageY - pos.y;
pos.left += e.pageX - pos.x;
dialog.style.top = pos.top + "px";
dialog.style.left = pos.left + "px";
}
pos.y = e.pageY;
pos.x = e.pageX;
}
function show(){
dialogbg.style.display = dialog.style.display = "block";
document.documentElement.style.overflow = "hidden";
rsSize();
}

function msg(msgStr, titleStr, callBack, defaultStr){
btnMin.style.display = btnMax.style.display = "none";
titleBar.innerHTML = titleStr || "Message Box";
btnOk.style.display = "inline-block";
btns.style.display = "block";
//content.firstChild.textContent = msgStr;
if(callBack == undefined){
btnCancel.style.display = "none";
callBackFun = null;
}else{
callBackFun = callBack;
btnCancel.style.display = "inline-block";
if(defaultStr == undefined){
textBox.style.display = "none";
returnValue = false;
}else{
textBox.style.display = "block";
textBox.value = defaultStr;
returnValue = null;
}
}
show();
}
msg("点击确定或取消", "msg函数演示", function(e){
alert(e);
}, "123456");
</script>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
</body>
</html>
KeepMoving 2011-01-07
  • 打赏
  • 举报
回复
还真没见过这种
如果真要实现的话,我建议你用DIV模仿一个吧!
gucong3000 2011-01-07
  • 打赏
  • 举报
回复
prompt改变为
msg(msgStr,function(value){
alert(您输入的值:+ value);
},defaultStr);

confirm改变为
msg(msgStr,function(value){
if(value){
//点击了是
}else{
//点击了否
}
});

alert改变为
msg(msgStr);

IE太麻烦了,暂时还不支持。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>baoti</title>
<style type="text/css">
#dialogbg {
top: 0;
left: 0;
width: 100%;
height: 100%;
position: fixed;
background: rgba(0,0,0,.2);
background: #0005;
}
.dialog {
width: auto;
text-align: left;
position: absolute;
min-width: 150px;
background: white;
border: 1px solid #666;
box-shadow: 2px 2px 6px rgba(0,0,0,.75);
-moz-box-shadow: 2px 2px 6px rgba(0,0,0,.75);
-webkit-box-shadow: 2px 2px 6px rgba(0,0,0,.75);
}
.dialog,.dialog btns>* {
border-radius: 5px;
-moz-border-radius: 5px;
-khtml-border-radius: 5px;
-webkit-border-radius: 5px;
behavior: url(../iefix/ie-css3.htc);
}
.dialog btns>*,.dialog .winbtns>* {
display: inline-block;
}
.dialog .title {
height: 20px;
cursor: default;
padding: 0 2px;
overflow: hidden;
line-height: 20px;
background: #0095cd;
border: solid 1px #0076a3;
border-radius-topleft: 5px;
border-radius-topright: 5px;
-moz-border-radius-topleft: 5px;
-moz-border-radius-topright: 5px;
-webkit-border-top-left-radius: 5px;
-webkit-border-top-right-radius: 5px;
background: -moz-linear-gradient(top, #00aaee, #0066cc);
background: -webkit-gradient(linear, left top, left bottom, from(#00aaee), to(#0066cc));
}
.dialog .title img{
max-width: 16px;
max-height: 16px;
margin: 0px 5px;
}
.dialog .winbtns {
top: 0;
right: 0;
position: absolute;
}
.dialog .winbtns>* {
display: inline-block;
width: 16px;
height: 15px;
overflow: hidden;
margin-top: 3px;
margin-right: 3px;
background: url(btns.gif);
}
.dialog .winbtns .min {
background-position: 0 120px;
}
.dialog .winbtns .min:hover {
background-position: 0 105px;
}
.dialog .winbtns .size {
background-position: 0 90px;
}
.dialog .winbtns .size:hover {
background-position: 0 75px;
}
.dialog .winbtns .max {
background-position: 0 60px;
}
.dialog .winbtns .max:hover {
background-position: 0 45px;
}
.dialog .winbtns .close {
background-position: 0 30px;
}
.dialog .winbtns .close:hover {
background-position: 0 15px;
}
.dialog .content {
margin: 10px;
}
.dialog input {
width: 100%;
}
.dialog .btns {
text-align: center;
margin: 10px 0;
}
.dialog .btns a {
color: #000;
width: 50px ;
height: 20px ;
margin: 0 5px;
text-decoration: none;
border: 1px solid #CCC;
}
#dialogbg, .dialog,.dialog .winbtns .size,.dialog input {
display: none ;
}
</style>
</head>
<body>
gdfgioersjkgti
<script type="text/javascript" src="../ie7/IE9.js"></script>
<script>
var dialogbg;
if(!dialogbg){
document.write('<div id="dialogbg"><div class="dialog"><div class="title"><img src="../../iboy.gif" width="9" height="12">TITLE</div><div class="winbtns"><a class="min" title="最小化" href="#"></a><a class="size" title="向下还原" href="#"></a><a class="max" title="最大化" href="#"></a><a class="close" title="关闭" href="#"></a></div><div class="content">fdgdfdfgfdgdfgdfgdfgdfgdfgdgdfgg<input type="text"></div><div class="btns"><a class="ok" href="#">确定</a><a class="cancel" href="#">取消</a></div></div></div>');
dialogbg = document.getElementById("dialogbg");
}
var dialog = dialogbg.firstChild;
var titleBar = dialog.firstChild;
var winbtns = titleBar.nextSibling;
var content = winbtns.nextSibling;
var textBox = content.lastChild;
var btns = content.nextSibling;
var btnMin = winbtns.firstChild;
var btnSize = btnMin.nextSibling;
var btnMax = btnSize.nextSibling;
var btnClose = btnMax.nextSibling;
var btnOk = btns.firstChild;
var btnCancel = btns.lastChild;
btnMin.hideFocus = true;
btnSize.hideFocus = true;
btnMax.hideFocus = true;
btnClose.hideFocus = true;
btnOk.hideFocus = true;
btnCancel.hideFocus = true;

var onDrag;
var pos = {};

function rsSize(){
pos.top = (dialogbg.offsetHeight - dialog.offsetHeight) / 2;
pos.left = (dialogbg.offsetWidth - dialog.offsetWidth) / 2;
dialog.style.width = dialog.style.height = "auto";
dialog.style.left = pos.left + "px";
dialog.style.top = pos.top + "px";
}

var callBackFun;
var returnValue;

function dialogClose(){
dialogbg.style.display = dialog.style.display = "none";
document.documentElement.style.overflow = "auto";
if(callBackFun){
callBackFun(returnValue);
}
return false;
}

btnClose.onclick = btnCancel.onclick = dialogClose;

btnMax.onclick = function(){
dialog.style.top = dialog.style.left = 0;
btnSize.style.display = "inline-block";
btnMax.style.display = "none";
dialog.style.height = "100%";
dialog.style.width = "100%";
return false;
}

btnSize.onclick = function(){
btnMax.style.display = "inline-block"
btnSize.style.display = "none";
rsSize();
return false;
}

btnOk.onclick = function(){
if(callBackFun){
if(textBox.style.display == "none"){
returnValue = true;
}else{
returnValue = textBox.value;
}
}
dialogClose();
return false;
}

titleBar.onmousedown = function(){
onDrag = true;
}

titleBar.onmouseup = function(){
onDrag = false;
}
titleBar.onselectstart = function(){
return false;
}
dialogbg.onmousemove = function(e){
if(!e){
e = window.event;
e.pageX = e.clientX + document.body.scrollLeft;
e.pageY = e.clientY + document.body.scrollTop;
}
if(onDrag == true){
pos.top += e.pageY - pos.y;
pos.left += e.pageX - pos.x;
dialog.style.top = pos.top + "px";
dialog.style.left = pos.left + "px";
}
pos.y = e.pageY;
pos.x = e.pageX;
}
function show(){
dialogbg.style.display = dialog.style.display = "block";
document.documentElement.style.overflow = "hidden";
rsSize();
}

function msg(msgStr, titleStr, callBack, defaultStr){
btnMin.style.display = btnMax.style.display = "none";
titleBar.innerHTML = titleStr || "Message Box";
btnOk.style.display = "inline-block";
btns.style.display = "block";
//content.firstChild.textContent = msgStr;
if(callBack == undefined){
btnCancel.style.display = "none";
callBackFun = null;
}else{
callBackFun = callBack;
btnCancel.style.display = "inline-block";
if(defaultStr == undefined){
textBox.style.display = "none";
returnValue = false;
}else{
textBox.style.display = "block";
textBox.value = defaultStr;
returnValue = null;
}
}
show();
}
msg("点击确定或取消", "msg函数演示", function(e){
alert(e);
}, "123456");
</script>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
asdasdasd<br>
</body>
</html>
Quinn2 2011-01-07
  • 打赏
  • 举报
回复
楼主搞的好复杂,一个提示窗口,就是来提示一些信息的。
何必跟它过不去呢。要实现某些功能,还是用层或者其它方法来实现吧。
djvfe 2011-01-06
  • 打赏
  • 举报
回复
如果可以实现的话貌似用途挺广,学习了
jamespengo 2011-01-06
  • 打赏
  • 举报
回复
13楼,明白你的意思了,在重写的alerts()里用模态对话框不就可以实现吗,或者window.open一个,然后把焦点放在子窗体也可以实现下面的程序停止,这个和浏览器没关系吧
  • 打赏
  • 举报
回复
这种其实是调用各个浏览器自身实现机制的功能,要是能完全如意实现统一,那就完全可以把所有浏览器都合并成一个了。从根上讲,这是不可能的。至少现在的浏览器们都没有对此提供统一甚至不统一的接口。
jamespengo 2011-01-06
  • 打赏
  • 举报
回复
请教下13楼 什么情况下有问题
wdbjsh 2011-01-06
  • 打赏
  • 举报
回复
12楼的这个写法有问题,在某些浏览器下,这样覆盖之后,不会中断js的执行。。。。

只有写成回调模式才有中断效果
jamespengo 2011-01-06
  • 打赏
  • 举报
回复
window.alert=function(){
alerts();//重写了alert();
}
以此类推
楼主记得结贴
madpc 2011-01-06
  • 打赏
  • 举报
回复
自已写倒不难,问题是跟原有的有出入,那种模式对话框你无法实现
agclqq 2011-01-06
  • 打赏
  • 举报
回复
目前得到的结果是不论jquery或Extjs,都需要写回调函数
彩票虫虫 2010-12-31
  • 打赏
  • 举报
回复
用Extjs可以的,也用不着程序大变,从本身讲Extjs就是javascript,只不过是将其包装成了框架。就像把面粉做成了面包,总归还是食物呵呵,你只要从里面取需要的,去掉不需要的就好了呵呵推荐使用Jquery其实也挺好的可是我不熟Jquery.所以你可以把Extjs只当成javascript就好了,只需要引入Extjs的js文件.
agclqq 2010-12-31
  • 打赏
  • 举报
回复
没有人来回答了吗
agclqq 2010-12-30
  • 打赏
  • 举报
回复
刚才搜索了一下ExtJS能否重写alert

得到以下答案:
由于ExtJS的alert是异步执行的不会产生阻塞,因此要将用户确认后才执行的代码放在回调函数中,否则在用户确认后续代码就会执行造成不必要的错误,这一点需要我们注意的。

也许重写后的只能将后面的代码放在回调函数中?也就意味着,程序结构必须大变?
加载更多回复(6)

87,909

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧