asp.net中窗口相关操作总结(javascript)

简介:

这些代码全部写在和页面分离的代码页中(codebehind),如果要嵌入到*.aspx页面,可能 
会出现问题. 
 
1.打开新窗口 
  这个简单:Response.Write(@"
< script 
    
language ='javascript' > window.open('url'); </ script > "); 
2.关闭窗口 
  //关闭当前窗口,并提示用户时候关闭,yes关闭,no退出 
  Response.Write(@"
< script  language ='javascript' > window.close(); </ script > "); 
  //延迟关闭窗口(下面代码表示2秒后关闭,无需确认) 
  Response.Write(@"
< script 
    
language ='javascript' > setTimeout('self.close()',2000); </ script > "); 
3.延迟时间 
  这个和上面的没有多少区别.我用到的情况是,在用户操作完毕给出提示,"n秒后,页面 
    转向"之类的只需去掉2重的Self.close()即可 
  Response.Write(@"
< script 
    
language ='javascript' > setTimeout('',2000); </ script > "); 
4.弹出提示或警告窗口 
  Response.Write(@"
< script  language ='javascript' > alert('添加成功,2秒钟后页面 
    将自动跳');
</ script > "); 
5.刷新其他页面 
  这个用到的情况还是不少.比如在B页面对数据更新和修改,另一页面A要保持最新数据 
  给客户,这是就要在对B操作完毕的情况下对A进行刷新: 
  Response.Write(@"
< script  language ='javascript' > window.opener.location. 
    href
='./default.aspx'
</ script > ") ; 
6.页面跳转 
  有时候在学要给出提示的情况下进行页面跳转,不能使用Response.Redirect("url"); 
  比如,当客户操作完毕,单击按钮提交,弹出提示框(使用上面3和4),如果使用了 
    Response.Redirect("url"); 
  那么页面将不给出提示,页就是3和4没有起作用就直接转向了. 
  如果你是下面的操作过程: 
  1).Response.Write(@"
< script  language ='javascript' > alert('添加成功,2秒钟后页 
    面将自动跳');
</ script > "); 
  2).Response.Write(@"
< script 
    
language ='javascript' > setTimeout('',2000); </ script > "); 
  3).页面转向: 
    Response.Write("
< meta  http-equiv ='refresh' 
    
content ='0;URL=./default.aspx' > "); 
    //这个我不知道用javascript怎么实现,熟悉的轻补充一下 
7.窗口传制问题 
  这个问题比较烦,打开模态窗口(ShowModelDialog)我还没有实现,请各位补充. 
  具体情况是这样的,比如说A打开一个新窗口B,当用户对B操作完毕后,我们获得必要的 
  数据,自动将其赋给A中的TextBox等控件,这个过程是在客户端完成的.就像发送邮件时, 
  需要从地址本中选取,然后将选中的发送地址传回来. 
  1).在A中加入如下代码,打开一个新窗口B. 
     Response.Write(window.">@"window.
        open('B.aspx','','toolbar=no,menubar=no,status=yes,location=no, 
        resizable=no,scrollbars=no,width=500,height=350');
</ script > "); 
  2).对B操作完毕,获得必要数据tmpStr,然后将其赋值给A中的TextBox1 
     Response.Write(@"
< script 
        
language ='javascript' > opener.document.all.TextBox1.value 
         
='" +tmpStr+"';
</ script > "); 
  注意:这个过程是在客户单用javascript完成的,因此我们不能按照服务端的编程习惯 
以及不能使用web服务控件的服务端属性进行操作.TextBox1是一个web服务控件, 
其id为TextBox1,A页面被服务器解析为html,通过浏览器浏览,TextBox1就变成了 
纯html控件,我们这里用javascript操作的也就是html控件,因此赋值使用的是 
TextBox1的value属性而不是Text属性.另外,web服务器控件的id被解析成html后, 
id有时会变,我们只要注意使用服务器解析后的id就成了,在浏览器中右键->查看源文件 
即可得到 
 
  对第七种操作情况最好使用打开模态窗口windows.ShowModelDialog(),但是比较麻烦, 
哦还没有实现. 
 
 
接上: 
 
调整本窗口大小和位置 
Response.Write("
< script > window.resizeTo(500,400); </ script > "); 
Response.Write("
< script > window.moveTo(300,200); </ script > "); 
 
 
接上: 
 
补:使用模态窗口传值 
 
主要代码如下: 
a.aspx and a.aspx.cs 
 
<% @ Page language="c#" Codebehind="a.aspx.cs" AutoEventWireup="false" 
Inherits
="Genesis02.a" 
%>  
< HTML >  
    
< HEAD >  
        
< title > a </ title >  
        
< SCRIPT  language ="javascript" >  
            
var str; 
 
            
function pop(url) 
 
            

                
var myDialog = document.a.TBoxType.value; 
 
                
if (window.showModalDialog) 
                

                    str
=window.showModalDialog(url,myDialog,"dialogHeight: 
300px; dialogWidth: 500px;center: yes; help: no;resizable: yes; status: 
no;
"); 
                    
if (typeof(str) != "undefined"
                    

                        document.a.TBoxType.value 
= str; 
                    }
 
                }
 
            }
 
        
</ SCRIPT >  
    
</ HEAD >  
    
< body  MS_POSITIONING ="GridLayout" >  
        
< form  id ="a"  method ="post"  runat ="server" >  
            
< asp:textbox  id ="TBoxType"  
runat
="server" ></ asp:textbox >< asp:button  id ="BtnGetType"  Runat ="server"  
Text
="Open" ></ asp:button >  
        
</ form >  
    
</ body >  
</ HTML >  
__________________________________________________________________ 
 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

    /// 
< summary >  
    /// a 的摘要说明。 
    /// 
</ summary >  
    public class a : System.Web.UI.Page 
    { 
        protected System.Web.UI.WebControls.TextBox TBoxType; 
        protected System.Web.UI.WebControls.Button BtnGetType; 
 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            if (!IsPostBack) 
 
            { 
                BtnGetType.Attributes["onclick"] = "pop('c.aspx');return 
false;"; 
            } 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// 
< summary >  
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// 
</ summary >  
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
 
        } 
        #endregion 
    } 

 
 
################################################################# 
b.aspx and b.aspx.cs 
 
<% @ Page language="c#" Codebehind="b.aspx.cs" AutoEventWireup="false" 
Inherits
="Genesis02.b" 
%>  
< HTML >  
    
< HEAD >  
        
< title > b </ title >  
        
< SCRIPT  language ="javascript" >  
        
function closeme() 
        

 
            
//top.returnvalue = 
window.document.all.LBoxRFAContent.options[window.document.all.LBoxRFAContent 
.selectedindex].value; 
            top.returnvalue 
= document.getElementById("TBoxvalue").value; 
            top.close(); 
        }
 
 
        
function Body_Load() 
        

            
if(window.dialogArguments != null
                window.document.getElementById(
"TBoxvalue").value = 
window.dialogArguments; 
            }
 
        }
 
        
</ SCRIPT >  
    
</ HEAD >  
    
< body  MS_POSITIONING ="GridLayout"  onload ="Body_Load()" >  
        
< form  id ="b"  method ="post"  runat ="server" >  
            
< asp:Button  id ="BtnClose"  style ="Z-INDEX: 101; LEFT: 152px; 
POSITION: absolute; TOP: 131px"
 runat ="server"  Text ="Close me" ></ asp:Button >  
 
            
< asp:TextBox  id ="TBoxvalue"  style ="Z-INDEX: 102; LEFT: 149px; 
POSITION: absolute; TOP: 69px"
 runat ="server" ></ asp:TextBox >  
        
</ form >  
    
</ body >  
</ HTML >  
 
__________________________________________________________________ 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

    /// 
< summary >  
    /// b 的摘要说明。 
    /// 
</ summary >  
    public class b : System.Web.UI.Page 
    { 
        protected System.Web.UI.WebControls.TextBox TBoxvalue; 
        protected System.Web.UI.WebControls.Button BtnClose; 
 
 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            if (!IsPostBack) 
            { 
                BtnClose.Attributes["onclick"] = "closeme();return false;"; 
            } 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// 
< summary >  
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// 
</ summary >  
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
 
        } 
        #endregion 
    } 

 
####################################################################### 
 
c.aspx and c.asp.cs 
 
<% @ Page language="c#" Codebehind="c.aspx.cs" AutoEventWireup="false" 
Inherits
="Genesis02.c" 
%>  
< HTML >  
 
    
< HEAD >  
        
< TITLE > c </ TITLE >  
    
</ HEAD >  
    
< frameset  rows ="0,*" >  
        
< frame  src ="about:blank" >  
        
< frame  src ="b.aspx" >  
    
</ frameset >  
</ HTML >  
 
 
____________________________________________________ 
 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

 
    /// 
< summary >  
    /// c 的摘要说明。 
    /// 
</ summary >  
    public class c : System.Web.UI.Page 
    { 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            // 在此处放置用户代码以初始化页面 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// 
< summary >  
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// 
</ summary >  
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
        } 
        #endregion 
    } 

 
############################################################################# 
 
c.aspx and c.asp.cs 
 
<% @ Page language="c#" Codebehind="c.aspx.cs" AutoEventWireup="false" 
Inherits
="Genesis02.c" 
%>  
< HTML >  
    
< HEAD >  
        
< TITLE > c </ TITLE >  
    
</ HEAD >  
    
< frameset  rows ="0,*" >  
        
< frame  src ="about:blank" >  
        
< frame  src ="b.aspx" >  
    
</ frameset >  
</ HTML >  
 
 
____________________________________________________ 
 
using System; 
using System.Collections; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Web; 
using System.Web.SessionState; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls; 
 
namespace Genesis02 

    /// 
< summary >  
    /// c 的摘要说明。 
    /// 
</ summary >  
    public class c : System.Web.UI.Page 
    { 
        private void Page_Load(object sender, System.EventArgs e) 
        { 
            // 在此处放置用户代码以初始化页面 
        } 
 
        #region Web Form Designer generated code 
        override protected void OnInit(EventArgs e) 
        { 
            // 
            // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。 
            // 
            InitializeComponent(); 
            base.OnInit(e); 
        } 
 
        /// 
< summary >  
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改 
        /// 此方法的内容。 
        /// 
</ summary >  
        private void InitializeComponent() 
        { 
            this.Load += new System.EventHandler(this.Page_Load); 
        } 
        #endregion 
    } 

 



本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2006/02/15/330853.html,如需转载请自行联系原作者
相关文章
|
开发框架 JavaScript 前端开发
揭秘:如何让你的asp.net页面变身交互魔术师——先施展JavaScript咒语,再引发服务器端魔法!
【8月更文挑战第16天】在ASP.NET开发中,处理客户端与服务器交互时,常需先执行客户端验证再提交数据。传统上使用ASP.NET Button控件直接触发服务器事件,但难以插入客户端逻辑。本文对比此法与改进方案:利用HTML按钮及JavaScript手动控制表单提交。后者通过`onclick`事件调用JavaScript函数`SubmitForm()`来检查输入并决定是否提交,增强了灵活性和用户体验,同时确保了服务器端逻辑的执行。
232 5
|
前端开发 JavaScript 数据处理
在JavaScript中,异步函数是指那些不会立即执行完毕,而是会在未来的某个时间点(比如某个操作完成后,或者某个事件触发后)才完成其执行的函数
【6月更文挑战第15天】JavaScript中的异步函数用于处理非同步任务,如网络请求或定时操作。它们使用回调、Promise或async/await。
218 7
|
数据采集 JavaScript 前端开发
通过ClearScript V8在.NET中执行复杂JavaScript逻辑
爬虫技术是数据采集的关键手段。针对动态加载的网页,传统HTTP请求及HTML解析难以满足需求。本文章介绍如何利用ClearScript V8库在.NET环境中执行复杂的JavaScript逻辑,以提高爬虫对动态内容的抓取效率。文章首先概述了ClearScript V8的功能,如何处理如微博这类含有大量动态加载内容的网站。通过使用代理IP、设置cookie和user-agent等方式模拟真实用户访问,确保了爬虫的稳定性和隐蔽性。提供了一个具体的C#爬虫示例,演示如何结合ClearScript V8和HTTP客户端来实现上述功能。这种方法不仅增强爬虫的灵活性,也极大地提高数据采集的效率和可靠性。
569 1
通过ClearScript V8在.NET中执行复杂JavaScript逻辑
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
204 1
|
存储 JavaScript 前端开发
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
js/javascript 操作字符串【全】(含常用的操作字符串的lodash)
241 1
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
266 5
|
JavaScript vr&ar 数据库
技术笔记:Js获取当前日期时间及其它操作
技术笔记:Js获取当前日期时间及其它操作
870 1
|
存储 前端开发 JavaScript
回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。
【6月更文挑战第27天】回调函数是JavaScript中处理异步编程的常见模式,常用于事件驱动和I/O操作。它作为参数传递给其他函数,在特定条件满足或任务完成后被调用。例如,`asyncOperation`函数接受回调函数`handleResult`,模拟异步操作后,调用`handleResult`传递结果。这样,当异步任务完成时,`handleResult`负责处理结果。
241 1
|
存储 JavaScript 前端开发
JavaScript中的数组是核心数据结构,用于存储和操作序列数据
【6月更文挑战第22天】JavaScript中的数组是核心数据结构,用于存储和操作序列数据。创建数组可以使用字面量`[]`或`new Array()`。访问元素通过索引,如`myArray[0]`,修改同样如此。常见方法包括:`push()`添加元素至末尾,`pop()`移除末尾元素,`shift()`移除首元素,`unshift()`添加到开头,`join()`连接为字符串,`slice()`提取子数组,`splice()`进行删除、替换,`indexOf()`查找元素位置,`sort()`排序数组。还有其他如`reverse()`、`concat()`等方法。
255 2
|
JavaScript 前端开发 安全
【JavaScript 】DOM操作快速入门
【JavaScript 】DOM操作快速入门
518 2