Wie bearbeite ich einen JavaScript-Warnfeldtitel?

168

Ich generiere eine JavaScript-Warnung mit folgendem Code auf der C # .NET-Seite:

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

Es wird ein Warnfeld mit der Überschrift "Nachricht von Webseite" angezeigt.

Ist es möglich, den Titel zu ändern?

Subash
quelle
Ich denke, die Frage war für JavaScript, das mit allen Plattformen und Browsern kompatibel ist, und nicht für VBScript, das ausschließlich IE und Windows ist, so dass seine Verwendung nur auf Windows beschränkt ist
UserTursty
2
Mögliches Duplikat von Change Title of Javascript Alert
Sjoerd
2
Wissen Sie, dass Warnungen vom Benutzer sehr einfach deaktiviert werden können? Darauf sollten Sie sich NICHT verlassen!
Toesslab

Antworten:

259

Nein, das kannst du nicht.

Es ist eine Sicherheits- / Anti-Phishing-Funktion.

Pierreten
quelle
22
Obwohl dies eine Antwort ist und tatsächlich wahr ist, habe ich festgestellt, dass Sie Ihre eigene Version der Warnung erstellen können und diese das tut, was Sie wollen. Ein einfaches Modal und überschreiben den Alarmfunktionsaufruf.
Fallenreaper
1
Wie ist dies eine Sicherheits- / Anti-Phishing-Funktion? Ich bin neugierig und streite nicht.
Tim
1
@Tim Vermutlich wäre es einfacher, eine andere Website zu simulieren, wenn Ihre Benachrichtigungen dem Benutzer nicht mitteilen würden, von welcher URL sie stammen. Wenn Sie diese Anpassung nicht zulassen, muss JavaScript dem Benutzer mitteilen, dass es sich nicht um eine legitime Nachricht handelt.
Hydrothermal
@Hydrothermal Kann das Alarmverhalten aus Neugier nicht jetzt von CSS simuliert werden, und wenn ja, ist es immer noch eine große Bedrohung, wenn Sie die modalen Alarmtitel ändern können?
Josh
6
@Josh Sie könnten mit viel harter Arbeit in die Nähe kommen, aber native Browser-Warnungen weisen ein Verhalten auf, das nicht simuliert werden kann, z. B. das Einfrieren des restlichen Browsers, das Überlagern der Browser-Benutzeroberfläche und das Funktionieren als separates Fenster kann vom Browser-Bildschirm gezogen werden. Es ist sehr schwierig, ein überzeugendes Replikat zu erstellen, zumal die Warnung jedes Browsers anders aussieht.
Hydrothermal
65

Nein, das ist nicht möglich. Sie können ein benutzerdefiniertes Javascript-Warnfeld verwenden.

Mit jQuery eine schöne gefunden

jQuery-Warnungsdialoge (Ersetzen, Bestätigen und Auffordern von Ersetzungen)

rahul
quelle
4
Vielen Dank, aber ich bin nicht daran interessiert, benutzerdefinierte
Warnbox zu
20
Der Grund, warum Sie den Titel übrigens nicht ändern können, besteht darin, zu verhindern, dass böswillige Websites den Benutzer dazu verleiten, zu glauben, dass die Warnung von seinem Betriebssystem oder etwas anderem stammt.
Benzado
1
HINWEIS: Ein anderer Benutzer hat versucht, diese Antwort zu bearbeiten, um anzuzeigen, dass der angegebene Link zu einer Site führte, auf der Malware erkannt wurde.
Nichts für ungut, aber diese Warnungen sehen sehr hässlich aus. SweetAlert ist viel hübscher als das.
Shashwat
32

Sie können dies im IE tun:

<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>

(Obwohl ich wirklich wünschte, du könntest es nicht.)

Chris Fulstow
quelle
53
Wir alle wünschen das gleiche
Rahul
@ Chris Fulstow, was eine Lösung für diese Frage sein kann
Tom
1
Ich liebe VBScript, ich wünschte, dass VBScript zusammen mit Javascript standardisiert würde. Auf diese Weise kann ich ohne die Verwirrung der Groß- und Kleinschreibung schreiben, und alle beliebten Brower würden meinen Befehlen gehorchen. MWHAHAHA
Ronnie Matthews
3
Wow, ein Kommentar hat mehr Stimmen als die Antwort ... für den zweiten Teil der Antwort
Marvin Thobejane
11

Überschreiben Sie die Funktion javascript window.alert ().

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

Damit können Sie Ihre eigene alert()Funktion erstellen . Erstellen Sie einen neuen 'cool' aussehenden Dialog (aus einigen div-Elementen).

Getestet in Chrome und Webkit, nicht sicher von anderen.

Derk Jochems
quelle
1
was ist someElementId? Welchen Tag meine ich?
Pramod Setlur
1
someElementIdist die ID, als die Sie Ihr HTML-Element festgelegt haben.
James P.
11

Ich habe diesen Sweetalert gefunden, um das Javascript der Header-Box anzupassen.

Beispielsweise

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");
});
Abed Putra
quelle
1
Ja. SweeAlert ist noch einfacher als Ihr Beispiel, wenn Sie möchten. Ich habe gerade einen <Skript-Link zu ihrer Bibliothek erstellt und das Wort "alert" in meinem Code ersetzt und da war es! Danke dir. Süße Empfehlung!
JustJohn
5

Um die Fragen zu beantworten, wie Sie sie gestellt haben.

Dies ist wirklich sehr einfach (zumindest in Internet Explorer), ich habe es in etwa 17,5 Sekunden getan.

Wenn Sie das von cxfx bereitgestellte benutzerdefinierte Skript verwenden: (Platzieren Sie es in Ihrer apsx-Datei)

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

Sie können es dann genauso aufrufen, wie Sie die reguläre Warnung aufgerufen haben. Ändern Sie einfach Ihren Code wie folgt.

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

Hoffe das hilft dir oder jemand anderem!

kralco626
quelle
2
Funktioniert für mich mit IE, aber nicht mit Firefox. Trotzdem danke, schnell und dreckig, könnte sich aber als nützlich erweisen.
Darth Continent
1
@ Darth. Yo ich proly hätte das erwähnen sollen. Es verwendet VBScript. Sie müssen googeln, wie VBScript in Firefox ausgeführt werden kann.
kralco626
2
@ Dath - PS Ich weiß nicht, ob es eine Möglichkeit gibt, VBScript unter Firefox auszuführen. Ich würde ein anderes Thema erstellen, das so etwas wie das Ausführen dieses vb-Skripts in Firefox heißt, und den Code posten, den ich Ihnen oben gegeben habe, und sehen, ob sich jemand etwas einfallen lassen kann.
kralco626
2
@Darth - Obwohl ich Rahuls Lösung verwenden würde. Verwenden Sie einfach etwas JQuery, es ist wirklich einfach!
kralco626
3
Zwei Abstimmungen, eine Gegenstimme ... aber keine Kommentare, um zu sagen, warum ich abgelehnt werde ... Ich denke, dies ist eine gültige Lösung ... zumindest im IE ...: /
kralco626
4

Hier gibt es einen netten "Hack" - https://stackoverflow.com/a/14565029, bei dem Sie einen Iframe mit einem leeren Quellcode verwenden, um die Warn- / Bestätigungsnachricht zu generieren - dies funktioniert unter Android nicht (aus Sicherheitsgründen) - kann aber zu Ihrem Szenario passen.

extraLRG
quelle
2

Sie können eine kleine Anpassung vornehmen, um oben eine leere Zeile zu lassen.

So was.

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

Ja, Sie können es ändern. Wenn Sie die VBscript-Funktion in Javascript aufrufen.

Hier ist ein einfaches Beispiel

<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>
Saeed
quelle
1
@ManikandanSethuraju es wird nicht auf FF und GC funktionieren, da sie VBScript nicht unterstützen.
Atsurti
1

Wenn Sie ein Projekt starten oder sich einfach einem Projekt anschließen, das auf Webanwendungen basiert, ist das Design der Benutzeroberfläche möglicherweise gut. Andernfalls sollte dies geändert werden. Um Web 2.0-Anwendungen zu erstellen, arbeiten Sie mit dynamischen Inhalten, vielen Effekten und anderen Dingen. All diese Dinge sind in Ordnung, aber niemand hat darüber nachgedacht, die JavaScript-Warn- und Bestätigungsfelder zu formatieren. Hier ist der Weg, .. völlig dynamisch, JS- und CSS-gesteuert Erstellen Sie eine einfache HTML-Datei

<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>

Erstellen Sie dann den einfachen js-Dateinamen jsConfirmStyle.js. Hier ist einfacher JS-Code

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();

}}

Sie können den vollständigen Quellcode hier herunterladen

Shafiqul Islam
quelle
1
Kannst du eine Demu machen? Plz
X-Coder
0

Ich hatte ein ähnliches Problem, als ich den Feldtitel und den Schaltflächentitel des Standardbestätigungsfelds ändern wollte. Ich habe mich für das Jquery Ui-Dialog-Plugin http://jqueryui.com/dialog/#modal-confirmation entschieden

Als ich folgendes hatte:

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

Ich habe es geändert 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');
}

Kann hier gesehen werden https://jsfiddle.net/5aua4wss/2/

Hoffentlich hilft das.

nur ich
quelle