Как редактировать заголовок окна предупреждения JavaScript?


168

Я генерирую предупреждение JavaScript со следующим кодом на странице C # .NET:

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

Отображается окно с заголовком «Сообщение с веб-страницы».

Можно ли изменить заголовок?


Я думаю, что вопрос был о JavaScript, который совместим со всеми платформами и браузерами, а не о VBScript, который является строго IE и Windows, поэтому его использование ограничено только Windows
UserTursty

2
возможный дубликат изменения названия Javascript Alert
Sjoerd

2
Знаете ли вы, что предупреждения могут быть очень легко отключены пользователем? Вы не должны полагаться на них!
toesslab

Ответы:


259

Нет, ты не можешь.

Это функция безопасности / антифишинга.


22
Хотя это ответ и НАСТОЯЩАЯ правда, я решил, что вы можете сделать свою собственную версию оповещения, и она будет делать то, что вы хотите. Простой модальный и переопределить вызов функции оповещения.
Fallenreaper

1
Как это функция безопасности / антифишинга? Мне любопытно, не спорю.
Тим

1
@Tim Предположительно, было бы проще смоделировать другой веб-сайт, если бы ваши оповещения не сообщали пользователю, с какого URL они исходят; Отказ от этой настройки заставляет JavaScript сообщать пользователю, что это недопустимое сообщение.
Гидротермальный

@Hydrothermal Просто из любопытства, не может ли теперь смоделировать поведение оповещения с помощью CSS, и если да, то все еще большая угроза позволить вам изменить названия модальных оповещений?
Джош

6
@Josh Вы могли бы приблизиться к большой тяжелой работе, но нативные предупреждения браузера имеют поведение, которое не может быть смоделировано, такое как зависание остальной части браузера, плавание поверх пользовательского интерфейса браузера и функционирование как отдельное окно, которое можно перетащить с экрана браузера. Очень сложно создать убедительную копию, тем более что предупреждения каждого браузера выглядят по-разному.
Гидротермальный

65

Нет, это невозможно. Вы можете использовать настраиваемое окно предупреждения JavaScript.

Нашел хороший с помощью jQuery

JQuery Alert Dialogs (оповещение, подтверждение и быстрые замены)


4
Спасибо, но я не заинтересован в использовании настраиваемого окна оповещения
subash

20
Кстати, причина, по которой вы не можете изменить заголовок, состоит в том, чтобы не дать злонамеренным веб-сайтам обмануть пользователя, заставляя его думать, что предупреждение исходит от его ОС или чего-то еще.
Бензадо

1
ПРИМЕЧАНИЕ. Другой пользователь попытался отредактировать этот ответ, чтобы указать, что указанная ссылка ведет на сайт, на котором было обнаружено вредоносное ПО.

Без обид, но эти предупреждения выглядят очень уродливо. SweetAlert намного красивее этого.
Шашват

32

Вы можете сделать это в 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>

(Хотя, я бы очень хотел, чтобы ты не смог.)


53
Мы все желаем того же
Рахул

@Chris Fulstow, что может быть решением этого вопроса
Том

1
Я люблю vbscript, я хочу, чтобы vbscript был стандартизирован вместе с javascript. таким образом я могу писать сценарии без путаницы чувствительности к регистру, и все популярные браузеры будут подчиняться моим командам MWHAHAHA
Ронни Мэтьюз

3
Ух ты, у комментария больше голосов, чем за ответ ... за второстепенную часть ответа
Марвин Тобеджейн

11

Переопределите функцию javascript window.alert ().

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

С этим вы можете создать свою собственную alert()функцию. Создайте новый «крутой» вид диалога (из некоторых элементов div).

Проверено работа в chrome и webkit, не уверен в других.


1
что такое someElementId? какой тег я имею ввиду?
Прамод Сетлур

1
someElementIdкакой бы идентификатор вы не указали в качестве элемента HTML.
Джеймс П.

11

Я нашел этот Sweetalert для настройки окна заголовка Javascript.

Например

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
Да. SweeAlert еще проще, чем ваш пример, если хотите. Я просто сделал ссылку <script на их библиотеку и заменил слово «alert» в моем коде, и вот оно! Спасибо. Сладкая рекомендация!
JustJohn

5

Чтобы ответить на вопросы с точки зрения того, как вы его задали.

Это на самом деле очень легко (по крайней мере, в Internet Explorer), я сделал это за 17,5 секунд.

Если вы используете пользовательский скрипт, предоставленный cxfx: (поместите его в файл apsx)

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

Затем вы можете позвонить так же, как вы вызвали обычное оповещение. Просто измените ваш код следующим образом.

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

Надеюсь, что это поможет вам или кому-то еще!


2
У меня работает с IE, но не с Firefox. Спасибо точно так же, быстро и грязно, но может оказаться полезным.
Дарт Континент

1
@ Дарт. Эй, я должен был упомянуть это. Его использование VBScript. Вы должны Google, как заставить VBScript работать в Firefox.
kralco626

2
@ Dath - PS Я не знаю, есть ли способ запустить VBScript на firefox. Я хотел бы создать еще одну тему, например, как запустить этот скрипт vb в Firefox и опубликовать код, который я дал вам выше, и посмотреть, сможет ли кто-нибудь что-нибудь придумать.
kralco626

2
@Darth - Хотя я бы использовал решение Рахула. Просто используйте JQuery, это действительно просто!
kralco626

3
Два отрицательных голоса, одно отрицательное ... но без комментариев, чтобы сказать, почему меня понижают ... Я думаю, что это правильное решение ... по крайней мере, в IE ...: /
kralco626

4

Здесь есть довольно приятный «хак» - https://stackoverflow.com/a/14565029, где вы используете iframe с пустым src для генерации предупреждающего / подтверждающего сообщения - он не работает на Android (ради безопасности) - но может подойти вашему сценарию.


2

Вы можете сделать небольшую корректировку, чтобы оставить пустую строку вверху.

Как это.

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

1

Да, вы можете изменить это. если вы вызываете функцию VBscript в Javascript.

Вот простой пример

<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 это не будет работать на FF и GC, так как они не поддерживают VBScript.
Ацурти

1

Когда вы запускаете или просто присоединяетесь к проекту на основе веб-приложений, дизайн интерфейса может быть хорошим. В противном случае это должно быть изменено. Для приложений Web 2.0 вы будете работать с динамическим содержимым, множеством эффектов и другим материалом. Все эти вещи хороши, но никто не задумывался над тем, чтобы создать окно предупреждений JavaScript и подтвердить их. Вот они, .. полностью динамические, управляемые JS и CSS Создать простой 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>

Затем создайте простое имя файла js jsConfirmStyle.js. Вот простой код 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();

}

Вы можете скачать полный исходный код здесь


1
можешь сделать дему плз
X-Coder

0

У меня была похожая проблема, когда я хотел изменить заголовок окна и заголовок кнопки окна подтверждения по умолчанию. Я пошел для диалогового плагина Jquery Ui http://jqueryui.com/dialog/#modal-confirmation

Когда у меня было следующее:

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

Я изменил это на:

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

Работать можно здесь https://jsfiddle.net/5aua4wss/2/

Надеюсь, это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.