不明白,怎么就是没法调用成功呢,我就是想执行一个弹出窗口
window.onload = myPopup;执行没问题,怎么Response.Write就不行呢
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;using System.Data.SqlClient;
public partial class alert : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Page.RegisterStartupScript("ggg", "<script>myPopup();</script>"); 
    }
}<%@ Page Language="C#" AutoEventWireup="true" CodeFile="alert.aspx.cs" Inherits="alert" %><!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 id="Head1" runat="server">
    <title>无标题页</title>
    <script language="javascript">
var divTop,divLeft,divWidth,divHeight,docHeight,docWidth,i = 0;
var popupMessage = new Object();
popupMessage.id = 'popupMessage';
popupMessage.obj = function(){
  return document.getElementById(popupMessage.id);
};
popupMessage.onLoad = function(){
    try{
        divTop = parseInt(popupMessage.obj().style.top,10); 
        divLeft = parseInt(popupMessage.obj().style.left,10);
        divHeight = parseInt(popupMessage.obj().offsetHeight,10);
        divWidth = parseInt(popupMessage.obj().offsetWidth,10);
        docWidth = document.body.clientWidth;
        docHeight = document.body.clientHeight;        popupMessage.obj().style.top = parseInt(document.body.scrollTop,10) + docHeight + 10;
        popupMessage.obj().style.left = parseInt(document.body.scrollLeft,10) + docWidth - divWidth;
        popupMessage.obj().style.visibility="visible";
        popupMessage.timer = window.setInterval(popupMessage.move,2);
       
    }
    catch(e){}
};
popupMessage.onResize = function(){
    i+=1;
    if(i>1000) popupMessage.close();
    try{
        divHeight = parseInt(popupMessage.obj().offsetHeight,10);
        divWidth = parseInt(popupMessage.obj().offsetWidth,10);
        docWidth = document.body.clientWidth;
        docHeight = document.body.clientHeight;
        popupMessage.obj().style.top = docHeight - divHeight + parseInt(document.body.scrollTop,10);
        popupMessage.obj().style.left = docWidth - divWidth + parseInt(document.body.scrollLeft,10);
    }
    catch(e){}
};
popupMessage.move = function(){
    try
    {
        if(parseInt(popupMessage.obj().style.top,10) <= (docHeight - divHeight + parseInt(document.body.scrollTop,10)))
        {
            window.clearInterval(popupMessage.timer);
            popupMessage.timer = window.setInterval(popupMessage.onResize,1);
        }
        divTop = parseInt(popupMessage.obj().style.top,10);
        popupMessage.obj().style.top = divTop - 1;
    }
    catch(e){}
};
popupMessage.close = function(){
    if(popupMessage.obj()) popupMessage.obj().parentNode.removeChild(popupMessage.obj());
    if(popupMessage.timer) window.clearInterval(popupMessage.timer);
};
popupMessage.createInstance = function(bodyHtml){
  try
  {
    if(popupMessage.obj())popupMessage.obj().parentNode.removeChild(popupMessage.obj());
    if(popupMessage.timer) window.clearInterval(popupMessage.timer);   
    i=0;
    var odiv = document.createElement('DIV');
    odiv.id = popupMessage.id;
    odiv.style.width="199px";
    odiv.style.height="auto";
    odiv.style.visibility="hidden";
    odiv.style.position="absolute";
    odiv.style.zIndex="99999";
    odiv.style.left="0px";
    
    odiv.innerHTML = bodyHtml;
    document.body.appendChild(odiv);  }
  catch(e){}
};window.onresize = popupMessage.onResize;function popupMessagePopup(bodyHtml)
{
    popupMessage.createInstance(bodyHtml);
    popupMessage.onLoad();
}
 
 popupMessage.convertWin = function(){
     var msg = document.getElementById('msgContent'); 
     var contentdis = document.getElementById('btContent');
     var flg = msg.style.display=="none";
     if(flg)
     {
          contentdis.innerHTML = '—';
          contentdis.title='最小化窗口';      
          msg.style.display = "block";
     }
     else
     {
          contentdis.innerHTML = '□';
          contentdis.title='最大化窗口'; 
          msg.style.display = "none";
     }
 }function myPopup()
{
alert("2");
  popupMessagePopup('<div style="width:199px; height:auto;font-size:12px;border:solid 1px #3399FF;background-color:#CFDEF4; ">'+
     '<div style="width:199px;height:20px; float:left; ">'+
       '<span style="width:140px;float:left;text-align:left;text-indent:8px;padding:4px; color:#0C53C5;">消息提示</span>'+
       '<span title="关闭" style="width:15px;border-width:0px;float:right;margin-right:5px;padding:4px; color:Red; cursor: hand; font-weight:bold;" onclick="popupMessage.close();return false;">×</span>'+
       '<span id="btContent" title="最小化窗口" style="width:15px;border-width:0px;float:right;padding:4px 4px 4px 4px; margin-right:7px;color:Red;cursor: hand;font-weight:bold;" onclick="popupMessage.convertWin();">—</span>'+
     '</div>'+
     '<div id="msgContent" style="width:199px;height:60px; float:left;WORD-BREAK: break-all; padding:8px 8px 8px 8px;border-top:solid 1px #3399FF; text-align:left; text-indent:10px; "><a href="mission_list.aspx" target="mainFrame"  style="font-size:15px; color:Red;">您有新任务!</a></div>'+
  '</div>');
}
//去掉注释运行正常
//window.onload = myPopup;</script>
</head>
<body></body>
</html>

解决方案 »

  1.   

    我不喜欢用前台注册脚本的方式。我更加喜欢用LITRAL或者LABEL控件。对控件赋JS执行代码。很好控制。(注意放到FORM外面)如果你要用这种方式。你可以看下最终生成的HTML代码中。你那注册的JS脚本在什么位置。
      

  2.   

    看样子你想在页面加载的时候执行myPopup()函数
    那么注意:
    Page.RegisterStartupScript("ggg", "<script>myPopup();</script>"); 
    这段代码注册了
    <script>myPopup();</script>
    这段JS代码,好,你想想,这段代码能执行么?myPopup()对JS来说是无法识别的,你换成alert('ok');它能执行,因为JS识别alert(),知道怎么调用并呈现它给用户,而它不知道如何调用你的myPopup();调试的话应该会报缺少对象的错误~在后台给一些button控件等注册JS脚本我们都很清楚了,
    但目前我还不知道怎么在后台给BODY元素注册脚本~估计也没必要!!
    你可以就在body里面写onload="myPopup()"就行了,干嘛要在后台写good luck
      

  3.   

    ls 的别误导 
    Page.RegisterStartupScript("ggg", "<script>myPopup();</script>"); 
    不起作用 是有原因的,因为并没有生成
    <script>myPopup();</script> LZ仔细看你的html code 在了解一下RegisterStartupScript 方法的功能 就知道了
      

  4.   

    补充一句,Response.Write 到是能生成 js 代码,可也不会按照LZ 的意图。因为生成的位置不对LZ 可以搜一下 Response.Write 与RegisterStartupScript、RegisterClientScriptBlock 的区别也可以尝试着把 js 代码写在 Literal、Label 等控件的 text 属性中 看下效果
      

  5.   

    Response.Write在页面第一行生成,<script>myPopup();</script>一定是不行了,