我正在寻找类似alert()
的东西,但那不会“暂停”脚本。是否存在不会暂停脚本的JavaScript警报?
我要显示一个警告,让下一个命令,一个形式submit()
,继续。因此,显示警报后页面将发生更改,但不会等到用户单击确定。
有没有这样的事情,或者它只是这些不可能的事情之一?
我正在寻找类似alert()
的东西,但那不会“暂停”脚本。是否存在不会暂停脚本的JavaScript警报?
我要显示一个警告,让下一个命令,一个形式submit()
,继续。因此,显示警报后页面将发生更改,但不会等到用户单击确定。
有没有这样的事情,或者它只是这些不可能的事情之一?
你可以做一个setTimeout的警报(这很短的超时)作为setTimeout的是异步的:
setTimeout("alert('hello world');", 1);
或者做正确,你真的表明使用的方法,而不是一个字符串到您的setTimeout:
setTimeout(function() { alert('hello world'); }, 1);
否则你会打开自己的JavaScript注入攻击。当你传递一个字符串时,它会通过JavaScript eval
函数运行。
在这种情况下,这将是更合适的是使用DHTML和JavaScript来动态地显示一个消息,无论是在一个普通的HTML元素,或一些看起来更像一个对话框(但不是)。这会给你你需要的控制。所有主要的JavaScript框架(YUI,Dojo和其他)都将使您能够异步显示消息。
不可靠。在新页面上使用div。
它可能不是你要找的东西,但它可能是适合使用window.status =“富”。
我在我的一个Web应用程序中使用了很多内部网。此外,setTimeout方法也可以工作,但如果浏览器忙于执行密集型任务,它可能会阻止。但状态栏更新始终是立即的。
但这也需要你的观众有一个JavaScript可以改变状态栏的设置 - 总是这样,如果它是一个受信任的站点。
如果已经使用JQuery http://docs.jquery.com/UI/Dialog是使用简单,款式很好。时间
98%存在于移动邮件脚本,使其一切执行后调用一个方法。对于另外的2%,我喜欢使用看起来像这样的浮动div。然后,您可以更改CSS以匹配应用程序/网站的样式,或者使其看起来更像标准的Windows弹出窗口。
/*HTML*/
<div class="floatingDiv" id="msgBox" style="visibility:hidden"></div>
/*javaScript*/
function openWindow(id){
"use strict";
document.getElementById(id).style.visibility = 'visible';
}
function closeWindow(id){
"use strict";
document.getElementById(id).style.visibility = 'hidden';
}
function myMsgBox(TITLE,MESSAGE) {
"use strict";
document.getElementById("msgBox").innerHTML = "<a href=\"javascript:closeWindow('msgBox')\" style=\"float:right\"><img src=\"imgs/close.png\" onmouseover=\"src='imgs/closeOver.png'\" onmouseout=\"src='imgs/close.png'\"/ alt=\"[close]\"></a><h2 style=\"text-align:center; margin-top:0px;\">" + TITLE + "</h2><hr><p align=\"left\">" + MESSAGE + "</p>";
openWindow("msgBox");
}
/*CSS*/
.floatingDiv {
position:absolute;
z-index:10000;
left:33%;
top:250px;
width:33%;
background-color:#FFF;
min-width:217px;
text-align: left;
border-radius: 10px 10px;
border:solid;
border-width:1px;
border-color:#000;
vertical-align:top;
padding:10px;
background-image: -ms-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%);
background-image: -moz-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%);
background-image: -o-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%);
background-image: -webkit-linear-gradient(top, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%);
background-image: linear-gradient(to bottom, #CCCCCC 0%, #FFFFFF 25px, #FFFFFF 100%);
box-shadow:3px 3px 5px #003;
filter: progid:DXImageTransform.Microsoft.Shadow(color='#000033', Direction=145, Strength=3);
}
不要传递一个字符串setTimeout,传递一个函数。 setTimeout(function(){alert('hello world');})更好 - 函数是Javascript中的一级对象 – Gareth 2008-11-20 00:16:09
是的,我知道我应该做它作为一个函数,而不是一个字符串被评估。 – 2008-11-20 00:51:45
该解决方案不适用于Chrome,即使在setTimeout中,警报也会暂停所有浏览器脚本。 – Anas 2015-12-15 12:55:16