Jak edytować tytuł pola alertów JavaScript?


168

Generuję alert JavaScript z następującym kodem na stronie C # .NET:

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

Wyświetla okno alertu z tytułem nagłówka „Wiadomość ze strony internetowej”.

Czy można zmodyfikować tytuł?


Myślę, że pytanie dotyczyło JavaScript, który jest kompatybilny ze wszystkimi platformami i przeglądarkami, a nie VBScript, który jest ściśle związany z IE i Windows, więc jego użycie jest ograniczone tylko do Windows
— UserTursty


2
Czy wiesz, że alerty mogą być bardzo łatwo wyłączone przez użytkownika? NIE powinieneś na nich polegać!
— toesslab

Odpowiedzi:


259

Nie, nie możesz.

To funkcja bezpieczeństwa / ochrony przed phishingiem.


22
Chociaż jest to odpowiedź i faktycznie jest prawdą, ustaliłem, że możesz stworzyć własną wersję alertu i zrobi to, co chcesz. Prosty modalny i przesłaniający wywołanie funkcji alert.
— Fallenreaper,

1
W jaki sposób jest to funkcja zabezpieczająca / antyphishingowa? Jestem ciekawy, nie kłócę się.
— Tim

1
@Tim Przypuszczalnie byłoby łatwiej zasymulować inną witrynę internetową, gdyby Twoje alerty nie informowały użytkownika, z jakiego adresu URL pochodzą; odrzucenie tego dostosowania zmusza JavaScript do poinformowania użytkownika, że ​​nie jest to uzasadniona wiadomość.
— Hydrotermalny

@Hydrothermal Tak z ciekawości, czy CSS nie może teraz symulować zachowania alertów, a jeśli tak, to czy zmiana tytułów alertów modalnych nadal stanowi duże zagrożenie?
— Josh

6
@Josh Możesz podejść blisko, wykonując dużo ciężkiej pracy, ale natywne alerty przeglądarki mają zachowanie, którego nie można zasymulować, takie jak zamrażanie reszty przeglądarki, unoszenie się nad interfejsem przeglądarki i działanie jako osobne okno, które można przeciągnąć poza ekran przeglądarki. Bardzo trudno jest stworzyć przekonującą replikę, zwłaszcza że alert każdej przeglądarki wygląda inaczej.
— Hydrotermalne

65

Nie, to niemożliwe. Możesz użyć niestandardowego pola ostrzegawczego javascript.

Znalazłem fajny przy użyciu jQuery

Okna dialogowe alertów jQuery (ostrzeżenie, potwierdzenie i monit o zastąpienie)


4
Dziękuję, ale nie jestem zainteresowany używaniem niestandardowego okna alertów
— subash

20
Nawiasem mówiąc, nie możesz zmienić tytułu, aby zapobiec oszukaniu użytkownika przez złośliwe witryny internetowe, aby pomyślał, że alert pochodzi z ich systemu operacyjnego lub z czegoś innego.
— benzado

1
UWAGA: Inny użytkownik próbował edytować tę odpowiedź, aby wskazać, że podane łącze prowadzi do witryny, w której wykryto złośliwe oprogramowanie.

Bez obrazy, ale te alerty wyglądają bardzo brzydko. SweetAlert jest o wiele ładniejszy niż ten.
— shashwat

32

Możesz to zrobić w 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>

(Chociaż naprawdę żałuję, że nie możesz.)


53
Wszyscy życzymy tego samego
— rahul

@Chris Fulstow, co może być rozwiązaniem tego pytania
— Tom

1
Uwielbiam vbscript, chciałbym, żeby vbscript był znormalizowany wraz z javascript. w ten sposób mogę pisać bez zamieszania związanego z rozróżnianiem wielkości liter, a wszystkie popularne przeglądarki będą posłuszne moim poleceniom MWHAHAHA
— Ronnie Matthews

3
Wow komentarz ma więcej głosów niż odpowiedź ... za oddelegowanie części odpowiedzi
— Marvin Thobejane

11

Zastąp funkcję window.alert () javascript.

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

Dzięki temu możesz stworzyć własną alert()funkcję. Utwórz nowe, fajnie wyglądające okno dialogowe (z niektórych elementów div).

Przetestowano działanie w Chrome i Webkicie, nie jestem pewien innych.


1
co jest someElementId? który tag mam na myśli?
— Pramod Setlur

1
someElementIdjest jakimkolwiek identyfikatorem, na jaki ustawiłeś swój element HTML.
— James P.,

11

Znalazłem ten Sweetalert w celu dostosowania javascript pola nagłówka.

Na przykład

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
Tak. SweeAlert jest jeszcze prostszy niż twój przykład, jeśli chcesz. Właśnie utworzyłem <link do skryptu do ich biblioteki i zastąpiłem słowo „alert” w moim kodzie i to było! Dziękuję Ci. Słodka rekomendacja!
— JustJohn

5

Aby odpowiedzieć na pytania dotyczące tego, jak to zadałeś.

To jest naprawdę NAPRAWDĘ łatwe (przynajmniej w Internet Explorerze), zrobiłem to w około 17,5 sekundy.

Jeśli używasz niestandardowego skryptu dostarczonego przez cxfx: (umieść go w swoim pliku apsx)

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

Możesz wtedy nazwać to tak samo, jak nazwałeś zwykły alert. Po prostu zmodyfikuj swój kod do następującego.

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

Mam nadzieję, że to pomoże tobie lub komuś innemu!


2
Działa dla mnie z IE, ale nie Firefox. Dzięki tak samo, szybko i nieprzyjemnie, ale może się przydać.
— Darth Continent

1
@ Darth. Yo I proly powinienem o tym wspomnieć. Używa VBScript. musisz wygooglować, jak uruchomić VBScript w przeglądarce Firefox.
— kralco626

2
@ Dath - PS Nie wiem, czy istnieje sposób na uruchomienie VBScript w przeglądarce Firefox. Stworzyłbym inny temat o nazwie coś w rodzaju, jak uruchomić ten skrypt vb w przeglądarce Firefox i opublikował kod, który ci podałem powyżej, i zobaczył, czy ktoś może coś wymyślić.
— kralco626

2
@Darth - Chociaż użyłbym rozwiązania Rahula. Po prostu użyj JQuery, to naprawdę proste!
— kralco626

3
Dwa głosy „przeciw”, jedno „za”… ale nie ma komentarzy na temat powodów, dla których jestem odrzucany… Myślę, że jest to poprawne rozwiązanie… przynajmniej w IE…: /
— kralco626

4

Jest tutaj całkiem niezły `` hack '' - https://stackoverflow.com/a/14565029 gdzie używasz iframe z pustym src do wygenerowania komunikatu ostrzegawczego / potwierdzenia - nie działa na Androidzie (ze względów bezpieczeństwa) - ale może pasować do twojego scenariusza.


2

Możesz dokonać niewielkiej korekty, aby zostawić pustą linię u góry.

Lubię to.

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

1

Tak, możesz to zmienić. jeśli wywołasz funkcję VBscript w JavaScript.

Oto prosty przykład

<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 nie będzie działać na FF i GC, ponieważ nie obsługują VBScript.
— atsurti

1

Kiedy zaczynasz lub po prostu dołączasz do projektu opartego na aplikacjach internetowych, projekt interfejsu może być dobry. W przeciwnym razie należy to zmienić. W aplikacjach Web 2.0 będziesz pracować z dynamiczną zawartością, wieloma efektami i innymi rzeczami. Wszystkie te rzeczy są w porządku, ale nikt nie pomyślał o stylizowaniu okien alertów JavaScript i potwierdzeń. Oto sposób, w jaki… całkowicie dynamiczny, oparty na JS i CSS Stwórz prosty plik 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>

Następnie utwórz prostą nazwę pliku js jsConfirmStyle.js. Oto prosty kod 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();

}

Możesz pobrać pełny kod źródłowy stąd


1
czy możesz zrobić demu plz
— X-Coder

0

Miałem podobny problem, gdy chciałem zmienić tytuł pola i tytuł przycisku domyślnego pola potwierdzenia. Wybrałem wtyczkę dialogową Jquery Ui http://jqueryui.com/dialog/#modal-confirmation

Kiedy miałem:

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

Zmieniłem to na:

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');
}

Można zobaczyć, jak pracuje tutaj https://jsfiddle.net/5aua4wss/2/

Mam nadzieję, że to pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.