จะแก้ไขชื่อช่องแจ้งเตือนของ JavaScript ได้อย่างไร


168

ฉันสร้างการแจ้งเตือน JavaScript ด้วยรหัสต่อไปนี้ในหน้า C # .NET:

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

มันจะแสดงกล่องการแจ้งเตือนด้วยชื่อหัวเรื่องเป็น "ข้อความจากหน้าเว็บ"

เป็นไปได้หรือไม่ที่จะแก้ไขชื่อ


ฉันคิดว่าคำถามสำหรับ JavaScript ที่เข้ากันได้กับทุกแพลตฟอร์มและเบราว์เซอร์และไม่ใช่สำหรับ VBScript ซึ่งเป็นสิ่ง IE และ Windows อย่างเคร่งครัดดังนั้นการใช้งานนั้น จำกัด เฉพาะ Windows เท่านั้น
UserTursty

2
อาจเป็นไปได้ซ้ำกับChange Title of Javascript Alert
Sjoerd

2
คุณรู้หรือไม่ว่าผู้ใช้สามารถปิดการแจ้งเตือนได้อย่างง่ายดาย? คุณไม่ควรพึ่งพาสิ่งเหล่านั้น!
toesslab

คำตอบ:


259

ไม่คุณไม่สามารถ

มันเป็นคุณสมบัติด้านความปลอดภัย / ป้องกันฟิชชิ่ง


22
ในขณะที่นี่คือคำตอบและเป็นจริงจริงฉันได้พิจารณาแล้วว่าคุณสามารถแจ้งเตือนเวอร์ชันของคุณเองและจะทำสิ่งที่คุณต้องการ คำกริยาที่ง่ายและแทนที่การเรียกฟังก์ชั่นการแจ้งเตือน
Fallenreaper

1
นี่เป็นคุณลักษณะด้านความปลอดภัย / ป้องกันฟิชชิงได้อย่างไร ฉันอยากรู้อยากเห็นไม่เถียง
ทิม

1
@Tim น่าจะเป็นการง่ายกว่าที่จะจำลองเว็บไซต์อื่นหากการแจ้งเตือนของคุณไม่ได้บอกผู้ใช้ว่า URL นั้นมาจากไหน การไม่อนุญาตให้ปรับแต่งนี้บังคับให้ JavaScript บอกผู้ใช้ว่าไม่ใช่ข้อความที่ถูกต้อง
Hydrothermal

@ ไฮโดรเทอร์มอลไม่อยากรู้อยากเห็นพฤติกรรมการแจ้งเตือนไม่สามารถจำลองด้วย CSS ได้ในตอนนี้และถ้าเป็นเช่นนั้นมันยังคงเป็นภัยคุกคามที่จะอนุญาตให้คุณเปลี่ยนชื่อการแจ้งเตือนแบบโมเดอเรเตอร์หรือไม่
Josh

6
@Josh คุณสามารถทำงานหนักได้มาก แต่การเตือนเบราว์เซอร์ดั้งเดิมมีพฤติกรรมที่ไม่สามารถจำลองได้เช่นการแช่แข็งเบราว์เซอร์ที่เหลือลอยอยู่ด้านบนของ UI เบราว์เซอร์และทำงานเป็นหน้าต่างแยกต่างหาก สามารถลากออกจากหน้าจอเบราว์เซอร์ เป็นการยากมากที่จะสร้างแบบจำลองที่น่าเชื่อถือโดยเฉพาะอย่างยิ่งเนื่องจากการแจ้งเตือนของเบราว์เซอร์แต่ละตัวนั้นดูแตกต่าง
Hydrothermal

65

ไม่เป็นไปไม่ได้ คุณสามารถใช้กล่องการแจ้งเตือนจาวาสคริปต์ที่กำหนดเอง

พบสิ่งที่ดีโดยใช้ jQuery

กล่องโต้ตอบการแจ้งเตือน jQuery (การเตือนการยืนยันและการเปลี่ยนพร้อมท์)


4
ขอบคุณ แต่ฉันไม่สนใจที่จะใช้กล่องการแจ้งเตือนที่กำหนดเอง
subash

20
เหตุผลที่คุณไม่สามารถเปลี่ยนชื่อได้คือเพื่อป้องกันเว็บไซต์ที่เป็นอันตรายจากการหลอกลวงผู้ใช้ให้คิดว่าการแจ้งเตือนนั้นมาจากระบบปฏิบัติการหรืออย่างอื่น
benzado

1
หมายเหตุ: ผู้ใช้รายอื่นพยายามแก้ไขคำตอบนี้เพื่อระบุว่าลิงก์ที่นำไปสู่ไซต์ที่ตรวจพบมัลแวร์

ไม่มีความผิด แต่การแจ้งเตือนเหล่านั้นดูน่าเกลียดมาก SweetAlert สวยกว่านี้มาก
shashwat

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
เราทุกคนปรารถนาเหมือนกัน
rahul

@ Chris Fulstow สิ่งที่สามารถเป็นทางออกสำหรับคำถามนี้
Tom

1
ฉันรัก vbscript ฉันหวังว่า vbscript จะได้มาตรฐานพร้อมกับจาวาสคริปต์ ด้วยวิธีนี้ฉันสามารถเขียนสคริปต์โดยไม่สับสนกับความไวของตัวพิมพ์เล็กและเบราว์เซอร์ยอดนิยมทั้งหมดจะเชื่อฟังคำสั่งของฉัน MWHAHAHA
Ronnie Matthews

3
ว้าวความคิดเห็นมีคะแนนเสียงมากกว่าคำตอบ ... สำหรับส่วนที่สองของคำตอบ
Marvin Thobejane

11

แทนที่ฟังก์ชัน javascript window.alert ()

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

ด้วยวิธีนี้คุณสามารถสร้างalert()ฟังก์ชั่นของคุณเอง สร้างกล่องโต้ตอบที่ดูดีและใหม่ (จากองค์ประกอบ div บางส่วน)

ผ่านการทดสอบการใช้งานในโครเมี่ยมและ webkit ไม่แน่ใจในสิ่งอื่น


1
คือsomeElementIdอะไร ฉันหมายถึงแท็กใด
Pramod Setlur

1
someElementIdID ใดที่คุณตั้งค่าองค์ประกอบ HTML ของคุณเป็น
James P.

11

ฉันพบSweetalertนี้สำหรับปรับแต่งกล่องส่วนหัวจาวาสคริปต์

ตัวอย่างเช่น

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 นั้นง่ายกว่าที่จะเป็นตัวอย่างถ้าคุณต้องการ ฉันเพิ่งสร้างลิงค์สคริปต์ <ไปยังไลบรารีของพวกเขาและแทนที่คำว่า "การแจ้งเตือน" ในรหัสของฉันและมันก็เป็น! ขอบคุณ. คำแนะนำที่ดี!
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 ขอบคุณเหมือนกันเร็วและสกปรก แต่อาจพิสูจน์ว่ามีประโยชน์
Darth Continent

1
@ Darth โย่ฉันควรจะพูดอย่างนั้น มันใช้ VBScript คุณต้อง google วิธีรับ VBScript ให้ทำงานใน firefox
kralco626

2
@ Dath - PS ฉันไม่รู้ว่ามีวิธีเรียกใช้ VBScript บน firefox หรือไม่ ฉันจะสร้างหัวข้ออื่นที่เรียกว่าสิ่งที่ชอบวิธีการเรียกใช้สคริปต์ vb นี้ใน firefox และโพสต์รหัสที่ฉันให้คุณข้างต้นและดูว่าใครสามารถเกิดขึ้นกับอะไร
kralco626

2
@Darth - แม้ว่าฉันจะใช้วิธีแก้ปัญหาของราหุล เพียงใช้ JQuery เป็นเรื่องง่าย!
kralco626

3
สอง downvote, หนึ่ง upvote ... แต่ไม่มีความคิดเห็นที่จะพูดว่าทำไมฉันถึงถูก downvote ... ฉันคิดว่านี่เป็นทางออกที่ถูกต้อง ... อย่างน้อยใน 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
atsurti

1

เมื่อคุณเริ่มต้นหรือเพียงแค่เข้าร่วมโครงการตาม webapplications การออกแบบส่วนต่อประสานอาจจะดี มิฉะนั้นควรเปลี่ยน ในการใช้งานแอปพลิเคชัน 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/

หวังว่าจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.