本文目录一览:
- 1、js 重写系统confirm方法,不改变使用方式。
- 2、重写confirm返回值的问题
- 3、js重写confirm 如何实现,自己写了个只是模拟出了效果,但是只要一调用就会返回false,求助
- 4、用js(最好jQuery) 重写confirm方法【js高手请进】
- 5、如何用javaScript修改comfirm提示框中按钮上的文字
js 重写系统confirm方法,不改变使用方式。
1、confirm属于特殊的模态窗口,执行这些语句会阻塞浏览器 Javascript 代码的运行。也就是说,在这句中 var a = confirm( "OK?" ) ;执行了 confirm( "OK?" ) 弹出一个确认框后,javascript 就不再执行,等到点完按钮、返回一个值后,才能完成赋值语句的执行。想要模拟这个功能,除非能弹出另外一个模态窗口,否则只用 普通的蒙版和 div 层是做不到阻塞 Javascript 的执行的。修改方法改成:function Confirm(msg,callback_OK,callback_CANCEL) { btnok.onclick = function(){ if(callback_OK typeof callback_OK == "function") callback_OK( true ); close();//你应该有这个功能吧? } btncancel.onclick = function(){ if(callback_CANCEL typeof callback_CANCEL== "function") callback_CANCEL( false ); close();//你应该有这个功能吧? }}这样的话,如果想执行类似这样的功能:if(confirm( "OK?" )){ okHandlerCode();}else{ cancelHandlerCode();}Confirm( "OK?" , okHandlerCode , cancelHandlerCode );利用这种方式,就解决了确认对话框的返回值接收的问题:js 重写系统confirm方法,不改变使用方式。
重写confirm返回值的问题
原生的confirm是通过线程阻塞达到这种目的,而在js里面无法达到这种效果,请弄清楚“同步”“异步”的概念。因此你这个思路是走不通的,函数调用完毕之时,你自定义的弹出框仅仅刚显示出来。但是你采用回掉的思路是正确的。
myCovered.style.display = "block";之后追加以下代码
document.getElementById("_c_true").onclick = okCallBack;
document.getElementById("_c_false").onclick = cancelCallBack;
就可以实现确认和取消的回调。
js重写confirm 如何实现,自己写了个只是模拟出了效果,但是只要一调用就会返回false,求助
alert、confirm等都属于特殊的模态窗口,执行这些语句会阻塞浏览器 Javascript 代码的运行。也就是说,在这句中
var a = confirm( "OK?" ) ;
执行了 confirm( "OK?" ) 弹出一个确认框后,javascript 就不再执行,直到你点完按钮、返回一个值后,才能完成赋值语句的执行。
而你想要模拟这个功能,除非能弹出另外一个模态窗口,否则只用 普通的蒙版和 div 层是做不到阻塞 Javascript 的执行的。
这也是你的代码返回 false 的原因:你的 confirm 在执行饭后,立即就返回了 false ,没等按钮被点击,Javascript 已经完成了赋值语句并继续下面的工作了。
有个建议,把你的方法改成:
function Confirm(msg,callback_OK,callback_CANCEL) {
btnok.onclick = function(){
if(callback_OK typeof callback_OK == "function")
callback_OK( true );
close();//你应该有这个功能吧?
}
btncancel.onclick = function(){
if(callback_CANCEL typeof callback_CANCEL== "function")
callback_CANCEL( false );
close();//你应该有这个功能吧?
}
}
这样的话,你如果想执行类似这样的功能:
if(confirm( "OK?" )){
okHandlerCode();
}else{
cancelHandlerCode();
}
就可以写成
Confirm( "OK?" , okHandlerCode , cancelHandlerCode );
利用这种方式,就解决了确认对话框的返回值接收的问题:
参数的语义表达的很清楚,okHandlerCode 内接收和处理确认框为 true 情形,cancelHandlerCode 则相反。
这只是一个思路。
用js(最好jQuery) 重写confirm方法【js高手请进】
$.confirm = function(msg,func1,func2,w,h) { Confirm(msg,func1,func2,w,h); };
function Confirm(msg,func1,func2,w,h){
var opts = {css:{width:w?w:300,height:h?h:120}};
//这里还可以判断msg的长度进行排版,并调整弹出框的大小
install(window.top, opts);
$.DialogData.dialogDiv.find("div[id^='_DialogButtons_']").css('text-align','center')
var win = topWin.$.DialogData.iframeObj.attr('contentWindow');
var doc = win.document;
doc.open();
doc.write("body/body") ;
var arr = [];
arr.push("divtable height='100%' border='0' align='center' cellpadding='10' cellspacing='0'");
arr.push("trtd align='center'img id='Icon' src='../images/icon_query.gif' width='34' height='34' align='absmiddle'/td");
arr.push("td align='left' id='Message' style='font-size:9pt'"+msg+"/td/tr/table/div");
var div = $(arr.join(''),doc.body);
$(doc.body).append(div);
doc.close();
//设置响应函数
//如果传递响应函数则执行,否则仅关闭窗口
$.DialogData.dialogDiv.find("input[id^='_ButtonOK_']").bind("click", function() {
$.unfunkyUI();
if(func1){
func1();
}
})
$.DialogData.dialogDiv.find("input[id^='_ButtonCancel_']").bind("click", function() {
if(func2){
func2();
}
}) ;
}
})(jQuery);
如何用javaScript修改comfirm提示框中按钮上的文字
没办法设置,那个文本是系统设定的,你用不同的操作系统可能会有所差别。 你要设置,你就用弹出层的方法。模拟出那样的一个效果。
下面这个方法可以将按钮替换为“是”,“否”的形式,只支持IE
script language=javascript
function window.confirm(str)
{
execScript("n = (msgbox('"+str+"',vbYesNo, '提示')=vbYes)", "vbscript");
return(n);
}
alert(confirm("重载的confirm弹出框"));
/script