Làm cách nào để chỉnh sửa tiêu đề hộp cảnh báo JavaScript?


168

Tôi đang tạo một cảnh báo JavaScript với mã sau trong trang C # .NET:

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

Nó hiển thị một hộp cảnh báo với tiêu đề là "Tin nhắn từ trang web".

Có thể sửa đổi tiêu đề?


Tôi nghĩ rằng câu hỏi dành cho JavaScript tương thích với tất cả các nền tảng và trình duyệt chứ không phải VBScript, đây là một điều nghiêm ngặt của IE và Windows, vì vậy việc sử dụng nó chỉ giới hạn ở Windows
UserTursty


2
Bạn có biết, người dùng có thể dễ dàng vô hiệu hóa cảnh báo không? Bạn KHÔNG nên dựa vào những cái đó!
toesslab

Câu trả lời:


259

Không, bạn không thể.

Đây là một tính năng bảo mật / chống lừa đảo.


22
Mặc dù đây là một câu trả lời và là SỰ THẬT, nhưng tôi đã xác định rằng bạn có thể đưa ra phiên bản cảnh báo của riêng mình và nó sẽ làm những gì bạn muốn. Một phương thức đơn giản và ghi đè cuộc gọi chức năng cảnh báo.
Fallenreaper

1
Làm thế nào đây là một tính năng bảo mật / chống lừa đảo? Tôi tò mò, không tranh cãi.
Tim

1
@Tim Có lẽ việc mô phỏng một trang web khác sẽ dễ dàng hơn nếu các cảnh báo của bạn không cho người dùng biết họ bắt nguồn từ URL nào; không cho phép tùy chỉnh này buộc JavaScript phải thông báo cho người dùng rằng đó không phải là một tin nhắn hợp pháp.
Thủy nhiệt

@Hydrothermal Chỉ cần tò mò, hành vi cảnh báo có thể được mô phỏng bằng CSS bây giờ không và nếu vậy, có còn nhiều mối đe dọa khi cho phép bạn thay đổi tiêu đề cảnh báo phương thức không?
Josh

6
@Josh Bạn có thể gần gũi với rất nhiều công việc khó khăn, nhưng cảnh báo trình duyệt riêng có hành vi không thể mô phỏng, chẳng hạn như đóng băng phần còn lại của trình duyệt, nổi trên giao diện người dùng trình duyệt và hoạt động như một cửa sổ riêng biệt có thể được kéo ra khỏi màn hình trình duyệt. Rất khó để tạo một bản sao thuyết phục, đặc biệt là vì mỗi cảnh báo của trình duyệt trông khác nhau.
Thủy nhiệt

65

Không, no không thể. Bạn có thể sử dụng hộp cảnh báo javascript tùy chỉnh.

Tìm thấy một cái tốt đẹp bằng cách sử dụng jQuery

Các hộp thoại cảnh báo jQuery (Thông báo, xác nhận và thay thế nhắc nhở)


4
Cảm ơn bạn, nhưng tôi không quan tâm đến việc sử dụng hộp cảnh báo tùy chỉnh
subash

20
Nhân tiện, lý do bạn không thể thay đổi tiêu đề là để ngăn các trang web độc hại lừa người dùng nghĩ rằng cảnh báo là từ hệ điều hành của họ hoặc một cái gì đó khác.
benzado

1
LƯU Ý: Một người dùng khác đã cố gắng chỉnh sửa câu trả lời này để chỉ ra rằng liên kết được cung cấp dẫn đến một trang web nơi phát hiện phần mềm độc hại.

Không xúc phạm nhưng những cảnh báo đó trông rất xấu xí. SweetAlert xinh hơn thế này nhiều.
shashwat

32

Bạn có thể làm điều này trong 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>

(Mặc dù, tôi thực sự muốn bạn không thể.)


53
Tất cả chúng ta đều mong muốn như vậy
rahul

@Chris Fulstow điều gì có thể là một giải pháp cho câu hỏi này
Tom

1
Tôi yêu vbscript, tôi ước rằng vbscript sẽ được chuẩn hóa cùng với javascript. bằng cách đó tôi có thể viết kịch bản mà không bị nhầm lẫn về độ nhạy của trường hợp và tất cả các trình duyệt phổ biến sẽ tuân theo mệnh lệnh của tôi MWHAHAHA
Ronnie Matthews

3
Wow một bình luận có nhiều phiếu hơn câu trả lời ... cho phần thứ hai của câu trả lời
Marvin Thobejane

11

Ghi đè hàm javascript window.alert ().

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

Với điều này, bạn có thể tạo alert()chức năng của riêng bạn . Tạo một hộp thoại trông 'ngầu' mới (từ một số yếu tố div).

Đã thử nghiệm làm việc trong chrome và webkit, không chắc chắn của người khác.


1
someElementIdgì ý tôi là thẻ nào
Pramod Setlur

1
someElementIdlà bất cứ id nào bạn đã đặt thành phần HTML của mình là.
James P.

11

Tôi tìm thấy Sweetalert này để tùy chỉnh javascript hộp tiêu đề.

Ví dụ

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
Vâng. SweeAlert thậm chí còn đơn giản hơn là ví dụ của bạn nếu bạn muốn. Tôi vừa tạo một <script liên kết đến thư viện của họ và thay thế từ "alert" trong mã của tôi và nó đã ở đó! Cảm ơn bạn. Đề nghị ngọt ngào!
JustJohn

5

Để trả lời các câu hỏi về cách bạn hỏi nó.

Điều này thực sự dễ dàng (ít nhất là trong Internet Explorer), tôi đã làm nó trong 17,5 giây.

Nếu bạn sử dụng tập lệnh tùy chỉnh mà cxfx cung cấp: (đặt nó trong tệp apsx của bạn)

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

Sau đó, bạn có thể gọi nó giống như bạn đã gọi cảnh báo thông thường. Chỉ cần sửa đổi mã của bạn để sau đây.

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

Hy vọng rằng sẽ giúp bạn, hoặc người khác!


2
Hoạt động với tôi với IE, nhưng không phải Firefox. Cảm ơn giống nhau, nhanh chóng và bẩn thỉu nhưng có thể chứng minh hữu ích.
Lục địa Darth

1
@ Darth. Yo tôi proly nên đã đề cập đến điều đó. Nó sử dụng VBScript. bạn phải google cách tải VBScript để chạy trong firefox.
kralco626

2
@ Dath - PS Tôi không biết có cách nào để chạy VBScript trên firefox không. Tôi sẽ tạo một chủ đề khác gọi là cách chạy tập lệnh vb này trong firefox và đăng mã tôi đã đưa cho bạn ở trên và xem có ai có thể đưa ra bất cứ điều gì không.
kralco626

2
@Darth - Mặc dù tôi sẽ sử dụng giải pháp của Rahul. Chỉ cần sử dụng một số JQuery thật dễ dàng!
kralco626

3
Hai downvote, một upvote ... nhưng không có bình luận nào cho biết lý do tại sao tôi bị downvote ... Tôi nghĩ đây là một giải pháp hợp lệ ... ít nhất là trong IE ...: /
kralco626

4

Có một 'hack' khá hay ở đây - https://stackoverflow.com/a/14565029 trong đó bạn sử dụng iframe với src trống để tạo thông báo cảnh báo / xác nhận - nó không hoạt động trên Android (vì mục đích bảo mật) - nhưng có thể phù hợp với kịch bản của bạn


2

Bạn có thể thực hiện một điều chỉnh nhỏ để để lại một dòng trống ở trên cùng.

Như thế này.

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

1

Có bạn có thể thay đổi nó. nếu bạn gọi hàm VBscript trong Javascript.

Đây là ví dụ đơn giản

<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 nó sẽ không hoạt động trên FF và GC vì chúng không hỗ trợ VBScript.
atsurti

1

Khi bạn bắt đầu hoặc chỉ tham gia một dự án dựa trên ứng dụng web, thiết kế giao diện có thể tốt. Nếu không thì điều này nên được thay đổi. Để các ứng dụng Web 2.0, bạn sẽ làm việc với các nội dung động, nhiều hiệu ứng và các thứ khác. Tất cả những điều này đều ổn, nhưng không ai nghĩ đến việc tạo kiểu cho hộp cảnh báo và xác nhận JavaScript. Đây là cách họ, .. hoàn toàn năng động, điều khiển JS và CSS Tạo tệp html đơn giản

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

Sau đó tạo tên tệp js đơn giản jsConfirmStyle.js. Đây là mã js đơn giản

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

}

Bạn có thể tải xuống mã nguồn đầy đủ từ đây


1
bạn có thể tạo một demu plz
X-Coder

0

Tôi gặp vấn đề tương tự khi tôi muốn thay đổi tiêu đề hộp và tiêu đề nút của hộp xác nhận mặc định. Tôi đã dùng plugin hộp thoại Jquery Ui http://jqueryui.com/dialog/#modal-conf Confirmation

Khi tôi có những điều sau đây:

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

Tôi đã thay đổi nó thành:

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

Có thể thấy làm việc ở đây https://jsfiddle.net/5aua4wss/2/

Mong rằng sẽ giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.