C# 自定义警报框显示不正确

C# 自定义警报框显示不正确,c#,javascript,asp.net,ajax,C#,Javascript,Asp.net,Ajax,我正在使用slayeroffice的自定义警报框,slayeroffice(period)com/code/custom\u-alert/。(不能发布超过两个链接)在我的浏览器上,它显示如下。警告框是屏幕中间的蓝色框。 在我的本地计算机上,它显示为这样,我突出显示了警报框。我希望我能把这个图像链接起来。 它在同一版本的浏览器上工作,但其中一个在本地 我做错了什么 这是我与slayeroffice代码集成的代码 <%@ Page Language="C#" AutoEventWireup

我正在使用slayeroffice的自定义警报框,slayeroffice(period)com/code/custom\u-alert/。(不能发布超过两个链接)在我的浏览器上,它显示如下。警告框是屏幕中间的蓝色框。

在我的本地计算机上,它显示为这样,我突出显示了警报框。我希望我能把这个图像链接起来。 它在同一版本的浏览器上工作,但其中一个在本地

我做错了什么

这是我与slayeroffice代码集成的代码

<%@ 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>
        &nbsp;</div>
        &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;
                <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="delayer();return false;" />&nbsp;
    </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()
。real
alert()
几乎会阻止页面中的所有其他浏览器活动。所有这些只是用一个“裹尸布”覆盖页面元素,以阻止鼠标/触摸交互。(事实上,在旧的IE浏览器上,
元素“戳穿”可能会有问题!)如果您想要简单的模式对话框,有很多新的解决方案可用。谢谢。我知道我错过了什么。