Come modificare il titolo di una casella di avviso JavaScript?


168

Sto generando un avviso JavaScript con il seguente codice nella pagina C # .NET:

Response.Write("<script language=JavaScript> alert('Hi select a valid date'); </script>");

Visualizza una finestra di avviso con il titolo "Messaggio dalla pagina Web".

È possibile modificare il titolo?


Penso che la domanda fosse per JavaScript che è compatibile con tutte le piattaforme e i browser e non per VBScript che è una cosa strettamente IE e Windows, quindi il suo utilizzo è limitato solo a Windows
UserTursty


2
Sai che gli avvisi possono essere facilmente disabilitati dall'utente? NON devi fare affidamento su quelli!
toesslab,

Risposte:


259

No, non puoi.

È una funzione di sicurezza / anti-phishing.


22
Anche se questa è una risposta ed è IN FATTO vera, ho deciso che puoi creare la tua versione di avviso e farà quello che vuoi. Un semplice modale e sovrascrive la chiamata della funzione di avviso.
Fallenreaper,

1
In che modo è una funzionalità di sicurezza / anti-phishing? Sono curioso, non sto discutendo.
Tim

1
@Tim Presumibilmente, sarebbe più semplice simulare un altro sito Web se i tuoi avvisi non dicessero all'utente da quale URL provengono; non consentire questa personalizzazione impone JavaScript per dire all'utente che non è un messaggio legittimo.
Idrotermale,

@Hydrothermal Solo per curiosità, il comportamento degli avvisi non può essere simulato dai CSS adesso e, in tal caso, rappresenta ancora una minaccia permetterti di cambiare i titoli degli avvisi modali?
Josh,

6
@Josh Potresti avvicinarti con un sacco di duro lavoro, ma gli avvisi del browser nativo hanno comportamenti che non possono essere simulati, come congelare il resto del browser, fluttuare nella parte superiore dell'interfaccia del browser e funzionare come una finestra separata che può essere trascinato fuori dalla schermata del browser. È molto difficile creare una replica convincente, soprattutto perché l'avviso di ciascun browser ha un aspetto diverso.
Hydrothermal,

65

No, non è possibile. È possibile utilizzare una casella di avviso javascript personalizzata.

Ne ho trovato uno carino usando jQuery

Finestre di avviso jQuery (sostituzione avvisi, conferma e richiesta rapida)


4
Grazie, ma non mi interessa utilizzare la casella di avviso personalizzata
subash

20
Il motivo per cui non è possibile modificare il titolo, tra l'altro, è impedire ai siti Web dannosi di indurre l'utente a pensare che l'avviso provenga dal loro sistema operativo o qualcos'altro.
benzado,

1
NOTA: un altro utente ha tentato di modificare questa risposta per indicare che il collegamento fornito ha portato a un sito in cui è stato rilevato malware.

Senza offesa, ma quegli avvisi sembrano molto brutti. SweetAlert è molto più bello di così.
Shashwat,

32

Puoi farlo in IE:

<script language="VBScript">
Sub myAlert(title, content)
      MsgBox content, 0, title
End Sub
</script>

<script type="text/javascript">
myAlert("My custom title", "Some content");
</script>

(Anche se, vorrei davvero che tu non potessi.)


53
Tutti desideriamo lo stesso
rahul,

@ Chris Fulstow quale può essere una soluzione a questa domanda
Tom,

1
Adoro vbscript, vorrei che vbscript fosse standardizzato insieme a javascript. in questo modo posso scrivere senza la confusione della distinzione tra maiuscole e minuscole e tutti i browser popolari obbedirebbero ai miei comandi MWHAHAHA
Ronnie Matthews,

3
Wow un commento ha più voti della risposta ... per il distacco di parte della risposta
Marvin Thobejane,

11

Sostituisci la funzione javascript window.alert ().

window.alert = function(title, message){
    var myElementToShow = document.getElementById("someElementId");
    myElementToShow.innerHTML = title + "</br>" + message; 
}

Con questo puoi creare la tua alert()funzione. Crea una nuova finestra di dialogo dall'aspetto "accattivante" (da alcuni elementi div).

Testato in Chrome e WebKit, non sicuro di altri.


1
che cos'è someElementId? quale tag intendo?
Pramod Setlur,

1
someElementIdè qualunque ID tu abbia impostato il tuo elemento HTML come.
James P.

11

Ho trovato questo Sweetalert per personalizzare la casella di intestazione javascript.

Per esempio

swal({
  title: "Are you sure?",
  text: "You will not be able to recover this imaginary file!",
  type: "warning",
  showCancelButton: true,
  confirmButtonColor: "#DD6B55",
  confirmButtonText: "Yes, delete it!",
  closeOnConfirm: false
},
function(){
  swal("Deleted!", "Your imaginary file has been deleted.", "success");
});

1
Si. SweeAlert è ancora più semplice del tuo esempio, se lo desideri. Ho appena creato un link <script alla loro libreria e ho sostituito la parola "alert" nel mio codice ed eccolo lì! Grazie. Dolce raccomandazione!
JustJohn,

5

Per rispondere alle domande in termini di come lo hai chiesto.

Questo è davvero VERAMENTE facile (almeno in Internet Explorer), l'ho fatto in circa 17,5 secondi.

Se usi lo script personalizzato fornito da cxfx: (inseriscilo nel tuo file apsx)

<script language="VBScript">
Sub myAlert(title, content)
MsgBox content, 0, title 
End Sub 
</script>

Puoi quindi chiamarlo come hai chiamato l'avviso normale. Modifica il tuo codice nel modo seguente.

Response.Write("<script language=JavaScript> myAlert('Message Header Here','Hi select a valid date'); </script>");

Spero che ti aiuti, o qualcun altro!


2
Funziona per me con IE, ma non con Firefox. Grazie lo stesso, veloce e sporco ma potrebbe rivelarsi utile.
Continente di Darth,

1
@ Darth. Yo proly avrei dovuto dirlo. Sta usando VBScript. devi google come far funzionare VBScript su Firefox.
kralco626,

2
@ Dath - PS Non so se esiste un modo per eseguire VBScript su Firefox. Vorrei creare un altro argomento chiamato qualcosa di simile a come eseguire questo script vb in Firefox e pubblicare il codice che ti ho dato sopra e vedere se qualcuno può inventare qualcosa.
kralco626,

2
@Darth - Anche se avrei usato la soluzione di Rahul. Basta usare un po 'di JQuery è davvero facile!
kralco626,

3
Due voti negativi, un voto positivo ... ma nessun commento per dire perché sto per essere votato in downgrade ... Penso che questa sia una soluzione valida ... almeno in IE ...: /
kralco626

4

C'è un bel 'hack' qui - https://stackoverflow.com/a/14565029 dove usi un iframe con un src vuoto per generare il messaggio di avviso / conferma - non funziona su Android (per motivi di sicurezza) - ma può adattarsi al tuo scenario.


2

Puoi fare un piccolo aggiustamento per lasciare una riga vuota in alto.

Come questo.

        <script type="text/javascript" >
            alert("USER NOTICE "  +"\n"
            +"\n"
            +"New users are not allowed to work " +"\n"
            +"with that feature.");
        </script>

1

Sì, puoi cambiarlo. se chiamate la funzione VBscript in Javascript.

Ecco un semplice esempio

<script>

function alert_confirm(){

      customMsgBox("This is my title","how are you?",64,0,0,0);
}

</script>


<script language="VBScript">

Function customMsgBox(tit,mess,icon,buts,defs,mode)
   butVal = icon + buts + defs + mode
   customMsgBox= MsgBox(mess,butVal,tit)
End Function

</script>

<html>

<body>
<a href="javascript:alert_confirm()">Alert</a>
</body>

</html>

1
@ManikandanSethuraju non funzionerà su FF e GC in quanto non supportano VBScript.
atsurti,

1

Quando avvii o ti unisci a un progetto basato su applicazioni Web, la progettazione dell'interfaccia è forse buona. Altrimenti questo dovrebbe essere cambiato. Per le applicazioni Web 2.0 lavorerai con contenuti dinamici, molti effetti e altre cose. Tutte queste cose vanno bene, ma nessuno ha pensato di dare uno stile all'avviso JavaScript e confermare le caselle. Ecco il loro modo, .. completamente dinamico, guidato da JS e CSS Crea un semplice file html

<html>
 <head>
   <title>jsConfirmSyle</title>
   <meta http-equiv="Content-Style-Type" content="text/css" />
   <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <script type="text/javascript" src="jsConfirmStyle.js"></script>
    <script type="text/javascript">

      function confirmation() {
       var answer = confirm("Wanna visit google?")
       if (answer){
       window.location = "http://www.google.com/";
       }
     }    

    </script>
    <style type="text/css">
     body {
      background-color: white;
      font-family: sans-serif;
      }
    #jsconfirm {
      border-color: #c0c0c0;
      border-width: 2px 4px 4px 2px;
      left: 0;
     margin: 0;
     padding: 0;
     position: absolute;
    top: -1000px;
    z-index: 100;
   }

  #jsconfirm table {
   background-color: #fff;
   border: 2px groove #c0c0c0;
   height: 150px;
   width: 300px;
  }

   #jsconfirmtitle {
  background-color: #B0B0B0;
  font-weight: bold;
  height: 20px;
  text-align: center;
}

 #jsconfirmbuttons {
height: 50px;
text-align: center;
 }

#jsconfirmbuttons input {
background-color: #E9E9CF;
color: #000000;
font-weight: bold;
width: 125px;
height: 33px;
padding-left: 20px;
}

#jsconfirmleft{
background-image: url(left.png);
}

#jsconfirmright{
background-image: url(right.png);
 }
 < /style>
  </head>
 <body>
<p><br />
<a href="#"
onclick="javascript:showConfirm('Please confirm','Are you really really sure to visit    google?','Yes','http://www.google.com','No','#')">JsConfirmStyled</a></p>
<p><a href="#" onclick="confirmation()">standard</a></p>

</body>
</html>

Quindi creare un semplice nome file js jsConfirmStyle.js. Ecco un semplice codice js

ie5=(document.getElementById&&document.all&&document.styleSheets)?1:0;
nn6=(document.getElementById&&!document.all)?1:0;

 xConfirmStart=800;
 yConfirmStart=100;

  if(ie5||nn6) {
  if(ie5) cs=2,th=30;
  else cs=0,th=20;
   document.write(
    "<div id='jsconfirm'>"+
        "<table>"+
            "<tr><td id='jsconfirmtitle'></td></tr>"+
            "<tr><td id='jsconfirmcontent'></td></tr>"+
            "<tr><td id='jsconfirmbuttons'>"+
                "<input id='jsconfirmleft' type='button' value='' onclick='leftJsConfirm()' onfocus='if(this.blur)this.blur()'>"+
                "&nbsp;&nbsp;"+
                "<input id='jsconfirmright' type='button' value='' onclick='rightJsConfirm()' onfocus='if(this.blur)this.blur()'>"+
            "</td></tr>"+
        "</table>"+
    "</div>"
  );
   }

 document.write("<div id='jsconfirmfade'></div>");


 function leftJsConfirm() {
  document.getElementById('jsconfirm').style.top=-1000;
  document.location.href=leftJsConfirmUri;
 }
function rightJsConfirm() {
document.getElementById('jsconfirm').style.top=-1000;
document.location.href=rightJsConfirmUri;
 }
function confirmAlternative() {
if(confirm("Scipt requieres a better browser!"))       document.location.href="http://www.mozilla.org";
}

leftJsConfirmUri = '';
rightJsConfirmUri = '';

  /**
   * Show the message/confirm box
  */
    function       showConfirm(confirmtitle,confirmcontent,confirmlefttext,confirmlefturi,confirmrighttext,con      firmrighturi)  {
document.getElementById("jsconfirmtitle").innerHTML=confirmtitle;
document.getElementById("jsconfirmcontent").innerHTML=confirmcontent;
document.getElementById("jsconfirmleft").value=confirmlefttext;
document.getElementById("jsconfirmright").value=confirmrighttext;
leftJsConfirmUri=confirmlefturi;
rightJsConfirmUri=confirmrighturi;
xConfirm=xConfirmStart, yConfirm=yConfirmStart;
if(ie5) {
    document.getElementById("jsconfirm").style.left='25%';
    document.getElementById("jsconfirm").style.top='35%';
}
else if(nn6) {
    document.getElementById("jsconfirm").style.top='25%';
    document.getElementById("jsconfirm").style.left='35%';
}
else confirmAlternative();

}

Puoi scaricare il codice sorgente completo da qui


1
puoi fare una dimostrazione
X-Coder

0

Ho avuto un problema simile quando volevo cambiare il titolo della casella e il titolo del pulsante della casella di conferma predefinita. Sono andato per il plug-in di dialogo dell'interfaccia utente di Jquery http://jqueryui.com/dialog/#modal-confirmation

Quando ho avuto il seguente:

function testConfirm() {
  if (confirm("Are you sure you want to delete?")) {
    //some stuff
  }
}

L'ho cambiato in:

function testConfirm() {

  var $dialog = $('<div></div>')
    .html("Are you sure you want to delete?")
    .dialog({
      resizable: false,
      title: "Confirm Deletion",
      modal: true,
      buttons: {
        Cancel: function() {
          $(this).dialog("close");
        },
        "Delete": function() {
          //some stuff
          $(this).dialog("close");
        }
      }
    });

  $dialog.dialog('open');
}

Si può vedere lavorando qui https://jsfiddle.net/5aua4wss/2/

Spero che aiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.