如何编辑JavaScript警报框标题?


168

我正在C#.NET页面中使用以下代码生成JavaScript警报:

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

它显示一个警告框,标题为“来自网页的消息”。

可以修改标题吗?


我认为问题是针对与所有平台和浏览器兼容的JavaScript,而不是针对VBScript(严格来说是IE和Windows),因此它的使用仅限于Windows
UserTursty 2012


2
您知道吗,用户可以很容易地禁用警报?你不应该依赖那些!
toesslab 2014年

Answers:


259

不,你不能。

这是一种安全/防网络钓鱼功能。


22
尽管这是一个答案,并且实际上是对的,但我已经确定您可以制作自己的警报版本,并且它将执行您想要的操作。一个简单的模式和覆盖警报功能调用。
Fallenreaper 2013年

1
这是一种安全/反网络钓鱼功能吗?我很好奇,没有争论。
蒂姆(Tim)

1
@Tim假设,如果您的警报没有告诉用户他们来自哪个URL,则模拟另一个网站会更容易。禁止这种自定义会强制JavaScript告诉用户这不是合法消息。
水热法

@Hydrothermal出于好奇,现在不能通过CSS模拟警报行为,如果是这样,允许您更改模式警报标题是否仍构成很大威胁?
2015年

6
@Josh您可能需要付出很多辛苦工作才能接近,但是本机浏览器警报具有无法模拟的行为,例如冻结浏览器的其余部分,浮动在浏览器UI的顶部以及用作单独的窗口,可以拖出浏览器屏幕。创建一个令人信服的副本非常困难,尤其是因为每个浏览器的警报看起来都不同。
Hydrothermal

65

不,这是不可能的。您可以使用自定义的JavaScript警报框。

使用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与javascript一起标准化。这样,我就可以编写脚本而不会区分大小写,并且所有流行的浏览器都将遵守我的命令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元素)。

经过测试可以在chrome和webkit中工作,尚不确定其他人。


1
是什么someElementId?我的意思是哪个标签?
Pramod Setlur

1
someElementId是您将HTML元素设置为的任何id。
James P.

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。您必须通过谷歌搜索如何使VBScript在firefox中运行。
kralco626

2
@ Dath-PS我不知道是否有办法在firefox上运行VBScript。我将创建另一个主题,例如如何在firefox中运行此vb脚本,并在上面发布我给您的代码,看看是否有人可以提出任何建议。
kralco626 2010年

2
@Darth-尽管我会使用Rahul的解决方案。只需使用一些JQuery,这真的很简单!
kralco626

3
两票,一票...但没有评论说为什么我被票...我认为这是一个有效的解决方案...至少在IE中...:/
kralco626 2012年

4

这里有一个很好的“ hack”-https: //stackoverflow.com/a/14565029,在其中您可以使用带有空src的iframe生成警报/确认消息-在Android上不起作用(出于安全考虑)-但可能适合您的情况。


2

您可以进行一些调整以在顶部留一个空白行。

像这样。

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

1

是的,您可以更改它。如果您在Javascript中调用VBscript函数。

这是简单的例子

<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由于不支持VBScript,因此在FF和GC上将不起作用。
atsurti

1

当您启动或仅加入基于Web应用程序的项目时,界面的设计也许很好。否则应对此进行更改。为了使用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
您能制作demu plz吗?
-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/

希望有帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.