C# 自定义警报框显示不正确
我正在使用slayeroffice的自定义警报框,slayeroffice(period)com/code/custom\u-alert/。(不能发布超过两个链接)在我的浏览器上,它显示如下。警告框是屏幕中间的蓝色框。 在我的本地计算机上,它显示为这样,我突出显示了警报框。我希望我能把这个图像链接起来。 它在同一版本的浏览器上工作,但其中一个在本地 我做错了什么 这是我与slayeroffice代码集成的代码C# 自定义警报框显示不正确,c#,javascript,asp.net,ajax,C#,Javascript,Asp.net,Ajax,我正在使用slayeroffice的自定义警报框,slayeroffice(period)com/code/custom\u-alert/。(不能发布超过两个链接)在我的浏览器上,它显示如下。警告框是屏幕中间的蓝色框。 在我的本地计算机上,它显示为这样,我突出显示了警报框。我希望我能把这个图像链接起来。 它在同一版本的浏览器上工作,但其中一个在本地 我做错了什么 这是我与slayeroffice代码集成的代码 <%@ Page Language="C#" AutoEventWireup
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test1.aspx.cs" Inherits="Test1" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<script type="text/javascript">
function showPopUp(){
setTimeout(function() {alert("Warning");}, 5000);
}
function delayer(){
showPopUp();
}
// constants to define the title of the alert and button text.
var ALERT_TITLE = "Oops!";
var ALERT_BUTTON_TEXT = "Ok";
// over-ride the alert method only if this a newer browser.
// Older browser will see standard alerts
if(document.getElementById) {
window.alert = function(txt) {
createCustomAlert(txt); //overrides alert method
}
}
function createCustomAlert(txt) {
// shortcut reference to the document object
d = document;
// if the modalContainer object already exists in the DOM, bail out.
if(d.getElementById("modalContainer")) return;
// create the modalContainer div as a child of the BODY element
mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
mObj.id = "modalContainer";
// make sure its as tall as it needs to be to overlay all the content on the page
mObj.style.height = document.documentElement.scrollHeight + "px";
// create the DIV that will be the alert
alertObj = mObj.appendChild(d.createElement("div"));
alertObj.id = "alertBox";
// MSIE doesnt treat position:fixed correctly, so this compensates for positioning the alert
if(false) alertObj.style.top = document.documentElement.scrollTop + "px";
// center the alert box
alertObj.style.left = (d.documentElement.scrollWidth - alertObj.offsetWidth)/2 + "px";
// create an H1 element as the title bar
h1 = alertObj.appendChild(d.createElement("h1"));
h1.appendChild(d.createTextNode(ALERT_TITLE));
// create a paragraph element to contain the txt argument
msg = alertObj.appendChild(d.createElement("p"));
msg.innerHTML = txt;
// create an anchor element to use as the confirmation button.
btn = alertObj.appendChild(d.createElement("a"));
btn.id = "closeBtn";
btn.appendChild(d.createTextNode(ALERT_BUTTON_TEXT));
btn.href = "#";
// set up the onclick event to remove the alert when the anchor is clicked
btn.onclick = function() { removeCustomAlert();return false; }
}
// removes the custom alert from the DOM
function removeCustomAlert() {
document.getElementsByTagName("body")[0].removeChild(document.getElementById("modalContainer"));
}
</script>
<form id="form1" runat="server">
<div>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="delayer();return false;" />
</form>
</body>
</html>
无标题页
函数showPopUp(){
setTimeout(函数(){alert(“Warning”);},5000);
}
函数延迟器(){
showPopUp();
}
//用于定义警报和按钮文本标题的常量。
var ALERT_TITLE=“Oops!”;
var警报按钮\u TEXT=“确定”;
//仅当此浏览器更新时,才跳过警报方法。
//较旧的浏览器将看到标准警报
if(document.getElementById){
window.alert=函数(txt){
createCustomAlert(txt);//重写警报方法
}
}
函数createCustomAlert(txt){
//文档对象的快捷方式引用
d=文件;
//如果DOM中已经存在modalContainer对象,请退出。
如果(d.getElementById(“modalContainer”))返回;
//创建modalContainer div作为主体元素的子元素
mObj=d.getElementsByTagName(“主体”)[0].appendChild(d.createElement(“div”);
mObj.id=“modalContainer”;
//确保其高度与覆盖页面上所有内容所需的高度相同
mObj.style.height=document.documentElement.scrollHeight+“px”;
//创建将成为警报的DIV
alertObj=mObj.appendChild(d.createElement(“div”);
alertObj.id=“alertBox”;
//MSIE不处理位置:已正确修复,因此这将补偿警报的定位
if(false)alertObj.style.top=document.documentElement.scrollTop+“px”;
//将警报框居中
alertObj.style.left=(d.documentElement.scrollWidth-alertObj.offsetWidth)/2+“px”;
//创建一个H1元素作为标题栏
h1=alertObj.appendChild(d.createElement(“h1”));
h1.appendChild(d.createTextNode(ALERT_TITLE));
//创建包含txt参数的段落元素
msg=alertObj.appendChild(d.createElement(“p”);
msg.innerHTML=txt;
//创建一个锚元素用作确认按钮。
btn=alertObj.appendChild(d.createElement(“a”));
btn.id=“closeBtn”;
btn.appendChild(d.createTextNode(警报按钮文本));
btn.href=“#”;
//设置onclick事件以在单击锚时删除警报
btn.onclick=function(){removeCustomAlert();返回false;}
}
//从DOM中删除自定义警报
函数removeCustomAlert(){
document.getElementsByTagName(“正文”)[0].removeChild(document.getElementById(“modalContainer”);
}
您缺少以下样式:
<style type="text/css">
#modalContainer {
background-color:transparent;
position:absolute;
width:100%;
height:100%;
top:0px;
left:0px;
z-index:10000;
background-image:url(tp.png); /* required by MSIE to prevent actions on lower z-index elements */
}
#alertBox {
position:relative;
width:300px;
min-height:100px;
margin-top:50px;
border:2px solid #000;
background-color:#F2F5F6;
background-image:url(alert.png);
background-repeat:no-repeat;
background-position:20px 30px;
}
#modalContainer > #alertBox {
position:fixed;
}
#alertBox h1 {
margin:0;
font:bold 0.9em verdana,arial;
background-color:#78919B;
color:#FFF;
border-bottom:1px solid #000;
padding:2px 0 2px 5px;
}
#alertBox p {
font:0.7em verdana,arial;
height:50px;
padding-left:5px;
margin-left:55px;
}
#alertBox #closeBtn {
display:block;
position:relative;
margin:5px auto;
padding:3px;
border:2px solid #000;
width:70px;
font:0.7em verdana,arial;
text-transform:uppercase;
text-align:center;
color:#FFF;
background-color:#78919B;
text-decoration:none;
}
</style>
#modalContainer{
背景色:透明;
位置:绝对位置;
宽度:100%;
身高:100%;
顶部:0px;
左:0px;
z指数:10000;
背景图像:MSIE需要url(tp.png);/*以防止对较低的z索引元素执行操作*/
}
#警报箱{
位置:相对位置;
宽度:300px;
最小高度:100px;
边缘顶部:50px;
边框:2倍实心#000;
背景色:#F2F5F6;
背景图片:url(alert.png);
背景重复:无重复;
背景位置:20px 30px;
}
#modalContainer>#警报箱{
位置:固定;
}
#警报框h1{
保证金:0;
字体:粗体0.9em verdana,arial;
背景色:#78919B;
颜色:#FFF;
边框底部:1px实心#000;
填充:2px 0 2px 5px;
}
#警报框p{
字体:0.7em verdana,arial;
高度:50px;
左侧填充:5px;
左边距:55像素;
}
#警报箱#关闭按钮{
显示:块;
位置:相对位置;
保证金:5px自动;
填充:3倍;
边框:2倍实心#000;
宽度:70px;
字体:0.7em verdana,arial;
文本转换:大写;
文本对齐:居中;
颜色:#FFF;
背景色:#78919B;
文字装饰:无;
}
任何通过检查“getElementById”方法是否存在而检测到“较新浏览器”的操作都需要退役到计算机博物馆。看起来您缺少css来设置弹出窗口的样式。尽管如此,我还是会选择一个更现代的解决方案。这一个似乎有点过时。希望您不需要window.alert()来阻止。确实过时了。。。从屏幕截图中可以看出:“这已经在MSIE6、Firefox 1.0、Safari和Opera 7.1+中进行了测试和验证。”问题是,这个解决方案并没有完全模仿alert()
。realalert()
几乎会阻止页面中的所有其他浏览器活动。所有这些只是用一个“裹尸布”覆盖页面元素,以阻止鼠标/触摸交互。(事实上,在旧的IE浏览器上,
元素“戳穿”可能会有问题!)如果您想要简单的模式对话框,有很多新的解决方案可用。谢谢。我知道我错过了什么。