js重寫confirm框(js提示框confirm)

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-31 11:48
下一篇 2024-12-31 11:48

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示“文件中含有宏,保存將導致宏不可用”的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字符無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • 金融閱讀器提示配置文件無法識別

    在使用金融閱讀器過程中,有時會遇到提示配置文件無法識別的情況。這種情況通常是由於配置文件中存在錯誤或不完整所導致的。本文將從多個方面對此問題進行詳細的闡述,並提供相應解決方法。 一…

    編程 2025-04-28
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿着SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿着SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 如何反混淆美團slider.js

    本文將從多個方面詳細闡述如何反混淆美團slider.js。在開始之前,需要明確的是,混淆是一種保護JavaScript代碼的方法,其目的是使代碼難以理解和修改。因此,在進行反混淆操…

    編程 2025-04-27
  • Python要學JS嗎?

    Python和JavaScript都是非常受歡迎的編程語言。然而,你可能會問,既然我已經學了Python,是不是也需要學一下JS呢?在本文中,我們將圍繞這個問題進行討論,並從多個角…

    編程 2025-04-27

發表回復

登錄後才能評論