try it:<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
    <script src="Message.js"></script>
</head>
<body>
    <form id="form1" runat="server">
    </form>
</body>
<script>showMessageBox("a","a","a");</script><!--参数可以随便给和程序调试无关-->
</html>

解决方案 »

  1.   

    你先写个简单的HTML页面,然后把上面的内容放到 这个HTML页面里,然后localhost/xx.html浏览下看有没有问题,如果没问题,估计就是<form id="form1" runat="server">
        </form>这个的原因了
      

  2.   

    prototype.js
    你有放在同一目录下么?
      

  3.   

    的确是form的关系,必须把<script>showMessageBox("a","a","a");</script>写在form外,但不知道还有没有解决的办法,就上这段代码希望还是在form里面
      

  4.   

    要是用的vs2005,应该把message.js放在App_Code下,就能看到错误了
      

  5.   

    不用Message.js文件,把脚本直接放入页面,能出现你想要的结果吧?
    <script type="text/javascript">
            var MessageBox=function(mention,image,onclick)
    {
        this.mention= mention;
        this.image = image;
        this.onclick = onclick;
        this.mainDiv = document.createElement("<div id=\"div_mention\" class=\"mistakes\"></div>");
        this.insideDiv1 = document.createElement("<div class=\"mistakes-t\"></div>");
        this.insideDiv1_li1 = document.createElement("<li class=\"mistakes-t1\"></li>");
        this.insideDiv1_li1.innerHTML = "系统提示信息";
        this.insideDiv1_li2 = document.createElement("<li class=\"mistakes-t2\"></li>");
        this.insideDiv1_li2_img = document.createElement("<img style=\"CURSOR:hand\" src=\"../image/company/tishi2.gif\" />");
        this.insideDiv1_li2_img.onclick = new Function("document.body.removeChild($('div_mention'));");
        this.insideDiv1_li2.appendChild(this.insideDiv1_li2_img);
        this.insideDiv1.appendChild(this.insideDiv1_li1);
        this.insideDiv1.appendChild(this.insideDiv1_li2);
        this.mainDiv.appendChild(this.insideDiv1);
        this.insideDiv2 = document.createElement("<div></div>");
        this.insideDiv2_li1 = document.createElement("<li class=\"mistakes-n\"></li>");
        this.insideDiv2_li1_img = document.createElement("<img />");
        this.insideDiv2_li1_img.src = this.image;
        this.insideDiv2_li1.appendChild(this.insideDiv2_li1_img);
        this.insideDiv2_li2 = document.createElement("<li class=\"mistakes-n1\"></li>");
        this.insideDiv2_li2.innerHTML = this.mention;
        this.insideDiv2_li3 = document.createElement("<li class=\"mistakes-n2\"></li>");
        this.button = document.createElement("<input type=\"button\" class=\"btn\" value=\"确 定\" />");
        this.button.onclick = new Function(onclick+"document.body.removeChild($('div_mention'));");
        this.insideDiv2_li3.appendChild(this.button);
        this.insideDiv2.appendChild(this.insideDiv2_li1);
        this.insideDiv2.appendChild(this.insideDiv2_li2);
        this.insideDiv2.appendChild(this.insideDiv2_li3);
        this.mainDiv.appendChild(this.insideDiv2);
    }
    MessageBox.prototype.show = function()
    {
        this.mainDiv.style.position = "absolute";
        this.mainDiv.style.right="300px";
        this.mainDiv.style.bottom="300px";
        document.body.appendChild(this.mainDiv);
        this.button.focus();
    }
    function showMessageBox(content,image,onclick)
    {
        new MessageBox(content,image,onclick).show();
    }
        </script>
      

  6.   

    出现错误(Internet Explorer 无法打开Internet站点 http://localhost/a.aspx 已终止操作)的原因:
    lz的代码为:
    <form id="form1" runat="server">
    <script>showMessageBox("a","a","a");</script><!--参数可以随便给和程序调试无关-->
    </form>
    浏览器按顺序加载页面元素,<form id="form1" runat="server">开始加载form组件,然后是里面的js:<script>showMessageBox("a","a","a");</script>,js加完后立即执行,而这时form没有加载完毕,如果这个时候js中对页面进行增减元素的操作,则会出现lz遇到的错误;
    要注意的是:
    1.form中的js如果没有对页面增减元素的操作,是不会出现错误的
    2.js不仅仅在form中会出现这种情况,在页面任何以<xxx></xxx>为结构的页面元素也同样会出现类似错误,比如<div></div>,<table></table>,<span></span>,<td></td>等等解决办法很多,只要回避上述现象的出现就可以了,比如将js放到form的外面,作为body的直接子节点,即:
    <body>
    <form id="form1" runat="server">
    </form>
    <script>showMessageBox("a","a","a");</script><!--参数可以随便给和程序调试无关-->
    </body>
      

  7.   

    可我的JS没有给FORM加东西,而是给BODY加东西这样也会出错吗
      

  8.   

    对,就是给body加东西会出错,因为form还没有加载完毕,form虽然是body的子节点,但form的加载状态会直接影响body
      

  9.   

    其实在写页面的时候要形成一个习惯,就是尽量将所有的js集中写(不要将js跟页面元素混杂在一起,增加程序的可读性,安全性),再去处理js的执行顺序,比如可以用<body onload=showMessageBox("a","a","a")></body>即在页面加载完毕时去执行showMessageBox函数
      

  10.   

    谢谢楼上,还有最后一个问题,就上一。NET如何在<form>外或<body onload="">时注册客户端事件
      

  11.   

    .net通过ClientScript.RegisterStartupScript想客户端注册js代码,
    但根据你刚才说的代码必须在form外声明,所以我不知道.net代码怎么写了
      

  12.   

    .net我不懂,我是做java的,不过我想知道js代码是何时注入的
    不知道可不可以让js代码在form里面跟form外面建立一个桥(先注入到form中,再想办法移出去)
      

  13.   

    .net通过ClientScript.RegisterStartupScript向客户端注册js代码:
    <script for="window" event="onload" language="javascript">showMessageBox("a","a","a")</script>
    上面代码可以放在form中
    绑定<script></script>对象
    相当于window.onload='showMessageBox("a","a","a")'
    这样应该没问题了