本文目錄一覽:
- 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
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/302740.html